MCPcopy Create free account
hub / github.com/Useful-Scripts-Extension/useful-script / getImgSrcsFromElement

Function getImgSrcsFromElement

scripts/magnify_image.js:449–516  ·  view source on GitHub ↗
(ele)

Source from the content-addressed store, hash-verified

447 "lazysrc",
448];
449function getImgSrcsFromElement(ele) {
450 if (!ele) return null;
451
452 let fn = [
453 () => {
454 let srcset = ele.srcset || ele.getAttribute("srcset");
455 if (!srcset) {
456 // child srcset
457 let childs = ele.children;
458 if (childs?.length) {
459 for (let i = 0; i < childs.length; i++) {
460 let _ = childs[i].srcset;
461 if (_) srcset += _ + ", ";
462 }
463 }
464 }
465 if (!srcset) return;
466 return getLargestSrcset(srcset);
467 },
468 () => {
469 // if (/img|picture|source|image|a/i.test(ele.tagName))
470 for (let i in lazyImgAttr) {
471 let attrName = lazyImgAttr[i];
472 let attrValue = ele.getAttribute(attrName);
473 if (/\bimagecover\.\w+$/i.test(attrValue)) continue;
474 if (attrValue) {
475 return attrValue;
476 }
477 }
478 },
479 () => getBg(ele),
480 () => {
481 if (/image/i.test(ele.tagName)) {
482 return ele.getAttribute("href"); // reddit
483 }
484 if (/svg/i.test(ele.tagName)) {
485 return [svgToBase64(ele), svgToBlobUrl(ele)];
486 }
487 if (/canvas/i.test(ele.tagName)) {
488 return ele.toDataURL();
489 }
490 if (/video/i.test(ele.tagName)) {
491 // get current capture frame
492 let canvas = document.createElement("canvas");
493 canvas.width = ele.videoWidth;
494 canvas.height = ele.videoHeight;
495 canvas.getContext("2d").drawImage(ele, 0, 0);
496 let dataURL = canvas.toDataURL();
497 canvas.remove();
498 return dataURL;
499 }
500 },
501 ];
502
503 let results = [];
504 for (let f of fn) {
505 try {
506 let srcs = f();

Callers 2

magnify_image.jsFile · 0.85
getImagesAtPosFunction · 0.85

Calls 8

getLargestSrcsetFunction · 0.85
getBgFunction · 0.85
svgToBase64Function · 0.85
svgToBlobUrlFunction · 0.85
relativeUrlToAbsoluteFunction · 0.85
concatMethod · 0.80
fFunction · 0.50
removeMethod · 0.45

Tested by

no test coverage detected