Кажется, я не могу заставить warnDefault или stopPropagation работать с некоторыми типами ссылок. Я хотел бы написать программу, чтобы выделить элемент на веб-странице и сохранить этот элемент, когда я нажимаю на него. Я хотел бы иметь возможность щелкать несколько элементов на странице, поэтому программа должна избегать перехода за пределы страницы. Программа не работает в некоторых случаях. Например, если я пройду по https://www.yahoo.com, мимо программы в журнале консоли и нажму на изображение рекламы, откроется ссылка. То же самое происходит, когда я захожу на https://www.amazon.com и нажимаю на изображение над «Отзывом об объявлении». Похоже, он просто не работает с рекламными ссылками.
Я пробовал эту программу в браузере Firefox и Chrome. Программа работает с большинством ссылок, но не с рекламной ссылкой. Просматривая исходный код HTML, я не могу понять, почему он не работает и как его можно исправить. Программа показана ниже. Просто скопируйте его для запуска в консоли.
var highlightDiv = document.createElement('div');
highlightDiv.id = 'testeditor123abc';
document.body.insertBefore(highlightDiv, document.body.firstChild);
var mouseX;
var mouseY;
document.addEventListener('mouseover', processElement, true);
document.addEventListener('click', captureElement, true);
function processElement(e) {
let elem = e.target;
let elemRect = elem.getBoundingClientRect();
highlightDiv.style.top = elemRect.top+'px';
highlightDiv.style.left = elemRect.left+'px';
highlightDiv.style.width = elemRect.width+'px';
highlightDiv.style.height = elemRect.height+'px';
highlightDiv.style.transition = '0.1s';
highlightDiv.style.background = 'rgba(0, 0, 255, 0.2)';
highlightDiv.style.borderColor = 'rgba(255, 0, 0, 0.8)';
highlightDiv.style.borderWidth = '2px';
highlightDiv.style.borderStyle = 'dashed';
highlightDiv.style.position = 'fixed';
highlightDiv.style.zIndex = '999999999999999';
highlightDiv.style.pointerEvents = 'none';
}
function captureElement(e) {
console.log('Mouse X: ', mouseX);
console.log('Mouse Y: ', mouseY);
let element = e.target;
let viewportDimensions = {};
viewportDimensions.height = document.documentElement.clientHeight;
viewportDimensions.width = document.documentElement.clientWidth;
let command = {};
console.log('Element:');
console.log(element);
e.preventDefault();
e.stopPropagation();
}
Я надеюсь, что программа перестанет отправлять меня на другую страницу для любого элемента, который я нажимаю на странице. Я очень ценю любое предложение. Благодаря.