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

Function getImagesAtPos

scripts/magnify_image.js:576–640  ·  view source on GitHub ↗
(x, y)

Source from the content-addressed store, hash-verified

574}
575
576async function getImagesAtPos(x, y) {
577 let eles = Array.from(document.querySelectorAll("*"));
578
579 let pos = validateMouse(x, y);
580 let sourceEles = [];
581 eles = eles.reverse().filter((ele) => {
582 let rect = ele.getBoundingClientRect();
583 let isAtMouse =
584 rect.left <= pos.x &&
585 rect.right >= pos.x &&
586 rect.top <= pos.y &&
587 rect.bottom >= pos.y;
588 if (isAtMouse && /picture|img/i.test(ele.tagName)) {
589 let sources = Array.from(ele.querySelectorAll("source"));
590 if (sources?.length) sourceEles = sourceEles.concat(sources);
591 }
592 return isAtMouse;
593 });
594 eles = eles.concat(sourceEles);
595 eles = eles.concat(
596 eles
597 .slice(0, 4)
598 .map((ele) => getAllChildElements(ele))
599 .flat()
600 );
601
602 if (!eles.length) return null;
603
604 console.log("eles", eles);
605
606 let results = [];
607 for (let ele of eles) {
608 let srcs = getImgSrcsFromElement(ele);
609 if (srcs && srcs?.length) {
610 if (!Array.isArray(srcs)) srcs = [srcs];
611 srcs.forEach((src) => {
612 if (!results.find((r) => r.src == src)) results.push({ src, ele });
613 });
614 }
615 }
616 console.log("results", results);
617
618 if (results.length > 1) {
619 let rank = [/source/i, /img/i, /picture/i, /image/i, /a/i];
620 results = results.sort((a, b) => {
621 let rankA = rank.findIndex((r) => r.test(a.src));
622 let rankB = rank.findIndex((r) => r.test(b.src));
623 rankA = rankA == -1 ? 100 : rankA;
624 rankB = rankB == -1 ? 100 : rankB;
625 return rankB - rankA;
626 });
627 console.log("after sort", results);
628 }
629
630 // filter out video
631 results = results.filter(({ ele, src }) => {
632 return !/iframe/i.test(ele.tagName);
633 });

Callers 1

magnifyImageFunction · 0.85

Calls 6

validateMouseFunction · 0.85
getAllChildElementsFunction · 0.85
getImgSrcsFromElementFunction · 0.85
filterMethod · 0.80
concatMethod · 0.80
sortMethod · 0.80

Tested by

no test coverage detected