-
Notifications
You must be signed in to change notification settings - Fork 24
/
Copy pathImages.js
46 lines (44 loc) · 1.4 KB
/
Images.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
var wptImages = function (win) {
var images = [];
if (win) {
var doc = win.document;
var elements = doc.getElementsByTagName("*");
for (var i = 0; i < elements.length; i++) {
var el = elements[i];
if (el.tagName == "IMG") {
var url = el.currentSrc || el.src;
// Only include HTTP(S) URLs i.e. skip dataURIs
if (url.indexOf("http") === 0) {
images.push({
url: url,
width: el.width,
height: el.height,
naturalWidth: el.naturalWidth,
naturalHeight: el.naturalHeight,
loading: el.getAttribute("loading"),
decoding: el.getAttribute("decoding"),
fetchpriority: el.getAttribute("fetchpriority"),
inViewport:
el.getBoundingClientRect().bottom >= 0 &&
el.getBoundingClientRect().right >= 0 &&
el.getBoundingClientRect().top <= window.innerHeight &&
el.getBoundingClientRect().left <= window.innerWidth,
});
}
}
if (el.tagName == "IFRAME") {
try {
var im = wptImages(el.contentWindow);
if (im && im.length) {
images = images.concat(im);
}
} catch (e) {
// continue regardless of error
}
}
if (images.length > 10000) break;
}
}
return images;
};
return JSON.stringify(wptImages(window));