在写浏览器扩展什么的时候可能会用上。
获取 DOM 里的图片主要是在这几个地方里面找: <img>
元素, background-image
CSS 属性和 <iframe>
。
img
如果只想获取 <img>
的图片,有两种方式:
直接获取所有 img
标签:
1 |
function getImgs (doc) { |
还可以用 document.images:
1 |
function getImgs (doc) { |
background-image
获得背景图片需要查看所有 DOM 节点的 background-image
属性:
1 |
function getBgImgs (doc) { |
背景图片不能直接得到尺寸信息,如果需要的话要加载一遍。因为搜集的图片很有可能已经在浏览器缓存里,所以加载过程应该很快。
1 |
function loadImg (src, timeout = 500) { |
iframe
只需要递归遍历 iframe 的 document
1 |
function searchIframes (doc) { |
整合一起
直接使用就行。
1 |
function getImgAll (doc) { |
如果是开发 Chrome 插件则不受跨域影响,可以直接使用 probe-image-size,它支持 timeout 参数,就不需要自己写 timer 了。我在写一个 Chrome 扩展时用上了,很方便。