Данное приложение в основном представляет собой инструмент DOM-инспектор, аналогичный тому, который доступен в Chrome Dev Tools, выполненном с использованием простой JS. В основном, когда пользователь нажимает на атрибуты элемента, такие как имена классов, xpaths и тексты должны быть доступны пользователю. Я столкнулся с проблемой, которая заключается в следующем: когда пользователь нажимает на такой элемент, как ссылка или на кнопку, браузер переходит к намеченной странице. Я попытался предотвратить эту проблему, используя следующий фрагмент кода:
var target = getSelectedElementFromPoint(e.clientX, e.clientY); // target has the element the user wants to inspect
if(target.nodeName.toLowerCase() == "a" || target.nodeName.toLowerCase() == "button"){
e.stopPropagation(); // e is the event
e.preventDefault();
}
Цель кода - получить элемент, на который пользователь нажимает, проверить, является ли он якорным тегом или кнопкой, и если да, остановите событие от дальнейшего развития. Тем не менее, он не работает так, как ожидалось, поскольку при щелчке мыши он по-прежнему перемещается на страницу.
Любая помощь будет оценена по достоинству.
EDIT: Обратите внимание, что я не могу использовать jQuery в этом конкретном экземпляре. Спасибо
EDIT2: Возможно, следовало бы упомянуть об этом раньше, но я забыл. Я на самом деле попытался также return false
. Использование return false достигает требуемой функциональности, но единственная проблема заключается в том, что после того, как пользователь покинет "Режим проверки", эта ссылка перестает быть кликабельным и это нежелательно.
В основном, что я хочу, так это то, что когда пользователь переходит в "Режим проверки", чтобы все ссылки были незаметными. И эти ссылки следует щелкнуть после удаления "Режим проверки". Вместо того, чтобы отключать все ссылки на странице, я думал о том, чтобы отключить тот, на который пользователь нажал.
Решение состоит в том, чтобы просто обернуть ваш код в чек для 'inspectMode'
. 'inspectMode'
должен быть логическим var.
Добавьте следующий код в обработчик событий:
if (inspectMode)
{
var target = getSelectedElementFromPoint(e.clientX, e.clientY);
if(target.nodeName.toLowerCase() == "a" || target.nodeName.toLowerCase() == "button")
{
e.stopPropagation(); // e is the event
e.preventDefault();
return false;
}
}
return true;
if
будет иметь мало разницы :(