如何在不滚动的情况下强制加载已安装 "lazy load" 的网页的图像?
How to force loading images for the webpages installed "lazy load" without scrolling?
我实现了一个 Chrome 扩展。该扩展程序需要获取网页的所有图片 URL。但是,有些网页有 "lazy load" 插件。
我的问题是我是否仍然可以在不需要手动向下滚动的情况下获取 URL?
查看源代码,您可以在所有图像上触发 'appear' 事件。
$('img').trigger('appear');
如果您愿意提供一个 jsfiddle 进行测试,将会有所帮助。
许多延迟加载插件将实际的 URL 存储在 data-* 部分。向下滚动时,就在图像标签进入视图之前,data-* 内容设置在 src
属性上以开始加载图像。
您可以像这样遍历所有图像标签来查找链接,例如:
var images = document.querySelectorAll("img"),
links = [], i = 0, img;
while(img = images[i++])
links.push(img.dataset.original || img.src);
但请注意,data-* 持有者没有命名标准,因此不同的插件将使用不同的名称 - 您必须手动收集这些名称(f.ex。this plugin uses the name data-original
, this one 使用 data-layzr
等等)。
你可以做一个循环遍历 dataset
集合的附加步骤来找到任何可能包含 URL 的字符串(如果 src
为空),但也可以这样容易出错,因为来自同一服务器的图像通常是相对链接,而 data-* 也可以包含其他数据。
我实现了一个 Chrome 扩展。该扩展程序需要获取网页的所有图片 URL。但是,有些网页有 "lazy load" 插件。 我的问题是我是否仍然可以在不需要手动向下滚动的情况下获取 URL?
查看源代码,您可以在所有图像上触发 'appear' 事件。
$('img').trigger('appear');
如果您愿意提供一个 jsfiddle 进行测试,将会有所帮助。
许多延迟加载插件将实际的 URL 存储在 data-* 部分。向下滚动时,就在图像标签进入视图之前,data-* 内容设置在 src
属性上以开始加载图像。
您可以像这样遍历所有图像标签来查找链接,例如:
var images = document.querySelectorAll("img"),
links = [], i = 0, img;
while(img = images[i++])
links.push(img.dataset.original || img.src);
但请注意,data-* 持有者没有命名标准,因此不同的插件将使用不同的名称 - 您必须手动收集这些名称(f.ex。this plugin uses the name data-original
, this one 使用 data-layzr
等等)。
你可以做一个循环遍历 dataset
集合的附加步骤来找到任何可能包含 URL 的字符串(如果 src
为空),但也可以这样容易出错,因为来自同一服务器的图像通常是相对链接,而 data-* 也可以包含其他数据。