我只想阻止在点击链接时打开新页面(可能是img或按钮)。这是我的" content-scripts.js"中的代码:
document.onclick = function() {
return false;
}
它可以工作,但有时它不起作用,我不知道为什么。当我点击网页上的某些元素时,它仍会打开另一个网址。
答案 0 :(得分:0)
它并不总是有效,因为点击可能无法一直到document
,它的冒泡可能会在它到达之前被取消。
要执行您正在执行的操作,您必须在页面上的每个元素上挂钩click
,并列出DOM修改,以便您可以挂钩如果新元素已添加到页面中,则会click
。
要处理所有元素,您可以递归地遍历DOM树,也可以通过document.querySelectorAll("*")
获取一个可能很大的列表。
要收听DOM修改,以便在添加新元素时将其挂钩,您需要mutation observer。
由于其他JavaScript代码可能会覆盖您的onclick
,我会改为使用addEventListener
,并且都会停止传播并停止即时传播:
function stopEvent(e) {
e.stopPropagation();
e.stopImmediatePropagation();
e.preventDefault();
}
someElement.addEventListener("click", stopEvent);
例如,粗略地说:
function stopEvent(e) {
e.stopPropagation();
e.stopImmediatePropagation();
e.preventDefault();
}
document.querySelectorAll("*").forEach(function(element) {
element.addEventListener("click", stopEvent);
});
...然后使用变异观察器来处理新添加的元素。