通过@jpdevries在1039的评论中
说到document.write()后备(我认为这是规则),那又如何呢?
网络连接速度缓慢时,Chrome将不再加载通过document.write()插入的脚本
https://developers.google.com/web/updates/2016/08/removing-document-write有没有讨论如何应对呢?
尚未,但感谢您引起我们的注意。
这是链接文档中有趣的部分
考虑到这些数据,Chrome小组最近宣布了一项意图,当我们通过更改Chrome中处理document.write()的方式(请参阅Chrome状态)来检测到这种已知的不良模式时,代表所有用户进行干预。 具体来说,Chrome不会执行
感谢您打开问题@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您的“延迟”代码有两件事:
<script>
的延迟。 给出的可怜的不足原因是没有人使用过...真正的me脚的故事,但可悲的是发生了....因此defer
起始不会起作用。 :(defer
公开样板的条件主要是等待IE10使用终止。@ hexalys😭我一直在对诸如带有局部回退的h5bp样式CDN之类的东西使用延迟启动,或者在包括polyfill之类的东西之前进行特征检测。 真是可惜!
闭幕! 我们很安全!
@roblarsen哦,太好了! Chrome是否恢复了他们的决定? 我很好奇为什么我们很安全,因为我真的❤️这种模式
@jpdevries仅当请求是跨源的时才触发,所以我们很好。 毕竟这是本地的后备。