|
Post by account_disabled on Jan 4, 2024 0:31:53 GMT -5
使用 JavaScript 填充浏览器的渲染管道。(查看大图) 虽然必须完全重新渲染页面可能看起来对性能影响不大(特别是对于某些网站),但请考虑这种情况发生的频率。如果你的polyfill的逻辑需要运行以响应滚动事件、窗口大小调整、鼠标移动、键盘事件等事件——实际上任何时候任何变化——那么事情将会明显地、有时甚至严重地缓慢。 当您意识到当今大多数 CSS polyfill 都包含自己的 CSS 解析器和级联逻辑时,情况会变得更糟。而且因为解析和级联实际上是非常复杂的事情,所以这些 polyfill 通常要么太大要么有太多 bug。 总结一下我刚才说的更简洁的内容:如果您希望浏览器做一些与它认为应该做的事情不同的事情(给定您提供的 CSS),那么您必须找到一种通过。 更新和修改来伪造它的方法自己的 DOM。您无权访问渲染管道中的其他步骤。 但为什么我想要修改浏览器的内部渲染引擎呢? 对我来说,这绝对是整篇文章中要回答的最重要的问题。所以,如果您到目前为止已经浏览了一些内容,请慢慢仔细地阅读这一部分! 看完最后一节后,我确信你们中的一些人会想:“我不需要这个!我只是构建普通的网页。我并不是想侵入浏览器的内部结构或构建一些超级奇特的、实验性的或前沿的东西。” 如果您这么想,那么 Whatsapp 号码列表 我强烈建议您退后一步,真正检查一下您多年来用于构建网站的技术。想要访问和挂钩浏览器的样式处理过程不仅仅是构建精美的演示,而是让开发人员和框架作者有能力做两件主要的事情: 标准化跨浏览器差异, 发明或填充。 新功能,以便人们今天就可以使用它们。 如果您曾经使用过 jQuery 等 JavaScript 库,那么您已经从这种能力中受益!事实上,这是当今几乎所有前端库和框架的主要卖点之一。GitHub 上五个最受欢迎的 J和 Ember——都做了很多工作来规范跨浏览器差异,这样您就不必考虑它。每个都公开一个 API,并且它可以正常工作。 现在,考虑一下 CS 及其所有跨浏览器问题。即使是 和 等流行的 框架声称具有跨浏览器兼容性,但实际上并没有使跨浏览器错误正常化——它们只是避免了这些错误 中的跨浏览器错误已不再是过去的事情。即使在今天,有了像 flexbox 这样的新布局模块,我们仍然面临着许多跨浏览器的不兼容性。 最重要的是,想象一下,如果您可以使用任何 CSS 属性,并且确信它在每个浏览器中都。
|
|