Не могу использовать stopProgagation и protectDefault, чтобы остановить открытие ссылки - PullRequest
0 голосов
/ 15 января 2019

Кажется, я не могу заставить 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();
}

Я надеюсь, что программа перестанет отправлять меня на другую страницу для любого элемента, который я нажимаю на странице. Я очень ценю любое предложение. Благодаря.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...