Html5-boilerplate: jQuery本地回退:Chrome将不再通过慢速连接通过document.write加载脚本

创建于 2016-09-08  ·  9评论  ·  资料来源: h5bp/html5-boilerplate

通过@jpdevries1039的评论中

说到document.write()后备(我认为这是规则),那又如何呢?

网络连接速度缓慢时,Chrome将不再加载通过document.write()插入的脚本
https://developers.google.com/web/updates/2016/08/removing-document-write

有没有讨论如何应对呢?

尚未,但感谢您引起我们的注意。

这是链接文档中有趣的部分

考虑到这些数据,Chrome小组最近宣布了一项意图,当我们通过更改Chrome中处理document.write()的方式(请参阅Chrome状态)来检测到这种已知的不良模式时,代表所有用户进行干预。 具体来说,Chrome不会执行

help wanted javascript

所有9条评论

感谢您打开问题@roblarsen。 我一直想知道是否可以在所有包含的脚本中添加defer来解决这个问题?

具有“异步”或“延迟”属性的脚本仍将执行。

就像是

<script defer src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
<script defer>window.jQuery || document.write('<script defer src="js/vendor/jquery-1.12.4.min.js"><\/script>')</script>
<script defer src="js/plugins.js"></script>
<script defer src="js/main.js"></script>

<script defer>window.jQuery || document.write('<script defer src="js/vendor/jquery-1.12.4.min.js"><\/script>')</script>

就像某种defer开始。 似乎可以正常工作,但不确定是否正确。

嗯...或者也许jquery脚本可能是异步的,而插件和主脚本却被推迟了。 当然需要确保这些加载在jQuery之后。

@jpdevries我认为重写Google Analytics(分析)使用现代DOM接口(parentNode.insertBefore)的include脚本也是一件值得研究的事情。

可以帮助您做出决定的相关讨论:

@FagnerMartinsBrack感谢您的链接。 您自己在reddit上的线程有助于弄清事情。 只要存在跨域条件,我们就无需担心。

我认为延迟策略是最好的选择。 我根本不喜欢异步,因为必须像jQuery这样尽快准备好脚本。 我已经建议在WICG /干预线程中进行更长期的实施...

@jpdevries您的“延迟”代码有两件事:

  1. WHATWG已弃用内联<script>的延迟。 给出的可怜的不足原因是没有人使用过...真正的me脚的故事,但可悲的是发生了....因此defer起始不会起作用。 :(
  2. 在IE 8-9中,“延迟”执行顺序存在问题。 IE 9-10中过早触发了“交互式”事件,可能会影响“延迟”脚本的执行。 后者可以绕开; 但是,这涉及到hack和底部的内联脚本以正确触发“交互” ...因此,使用defer公开样板的条件主要是等待IE10使用终止。

@ hexalys😭我一直在对诸如带有局部回退的h5bp样式CDN之类的东西使用延迟启动,或者在包括polyfill之类的东西之前进行特征检测。 真是可惜!

闭幕! 我们很安全!

@roblarsen哦,太好了! Chrome是否恢复了他们的决定? 我很好奇为什么我们很安全,因为我真的❤️这种模式

@jpdevries仅当请求是跨源的时才触发,所以我们很好。 毕竟这是本地的后备。

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

necolas picture necolas  ·  44评论

roblarsen picture roblarsen  ·  5评论

coliff picture coliff  ·  14评论

alrra picture alrra  ·  18评论

roblarsen picture roblarsen  ·  5评论