在以前版本的chrome中,在包含以下内容的网页上:
<script>
document.write('<plaintext>');
</script>
<img src="http://example.com/image.jpg">
无法下载图片。在某些时候,Chrome更新改变了这种行为。现在,当我查看网络选项卡时,我看到图像已下载。 (小提琴:https://jsfiddle.net/doojunqx/)
我有一个页面上的脚本,我想使用这个脚本来阻止浏览器下载(使用网络带宽)图像和其他不需要的资产并且低于我的脚本标记。
Mobify在这里做了类似的事情: http://cdn.mobify.com/mobifyjs/examples/capturing-grumpycat/index.html
正如他们在页面上所说的那样“打开你的网络检查员并注意原始的imgs没有加载。”但是,当我打开chrome开发人员工具并查看网络选项卡时,我看到原始图像现在正在加载。我不确定哪个版本的Chrome改变了这个,但我认为它是最近的,在过去的一两个月内。
有没有办法强迫chrome回复旧行为?或任何其他方式来阻止这些不需要的资产加载?
谢谢,
答案 0 :(得分:2)
很棒的问题,你是明确的a recent change in Chromium影响了明文标签的行为。在版本42. *之前的版本中,HTML文档解析器在原始HTML文档中找不到外部资源之前不会生成异步解析线程。一旦找到这样的资源,就会产生一个异步线程,它会积极地下载HTML中的所有资源引用。
最近的更改通过将所有文档解析移动到现在自动启动的异步线程来简化解析行为。而在此之前,使用明文标签将确保在第一个外部资源之前插入资源时不会加载任何资源,因为资源将下载到明文标记在主HTML文档中执行的那一刻,明文标记现在很简洁。由于脚本执行会有时间延迟,因此将检索到未知数量的资源。
这种新行为尚无解决方案,也没有办法按您的意愿禁用预加载扫描程序。您需要依赖polyfills等变通方法来控制资源下载。此新行为仅适用于所有版本的Chrome&gt; = 43. *,并且尚未在Safari,Firefox或其他浏览器中实施。