2

在以前版本的 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

正如他们在“打开您的网络检查器并注意原始图像未加载”页面上所说的那样。但是,当我打开 chrome 开发人员工具并查看网络选项卡时,我看到原始图像正在加载。我不确定哪个版本的 chrome 改变了这一点,但我认为它是最近的,在过去一两个月内。

有什么办法可以强制 chrome 恢复到旧的行为?或者任何其他方式来阻止这些不需要的资产加载?

谢谢,

4

1 回答 1

3

很好的问题,你说得对,Chromium 最近的变化影响了明文标签的行为。在 42.* 及之前的版本中,HTML 文档解析器不会产生异步解析线程,直到在原始 HTML 文档中找到外部资源。一旦找到这样的资源,就会产生一个异步线程,该线程将积极下载 HTML 中的所有资源引用。

最近的更改通过将所有文档解析移动到现在自动启动的异步线程来简化解析行为。以前,使用纯文本标签将确保如果在第一个外部资源之前插入任何资源,则不会加载任何资源,而纯文本标签现在很活跃,因为资源将在主 HTML 文档中执行纯文本标签的那一刻下载。由于脚本执行存在时间延迟,因此将检索未知数量的资源。

目前还没有解决这种新行为的方法,也没有办法按照您的意愿禁用预加载扫描程序。您将需要依靠诸如 polyfill 之类的变通方法来控制您的资源下载。此新行为仅存在于 Chrome >= 43.* 的所有版本中,并且尚未在 Safari、Firefox 或其他浏览器中实现。

于 2015-06-27T00:14:11.827 回答