我正在尝试使用“选择”功能进行扩展:让用户单击页面上的任何元素并查看它的 xpath。
但是,为了使其可用,我必须防止元素对点击做出反应:我不想点击超链接将我转发到另一个页面、提交表单的按钮等,等等。
我该怎么做?
UPD:我只需要 Chrome
我正在尝试使用“选择”功能进行扩展:让用户单击页面上的任何元素并查看它的 xpath。
但是,为了使其可用,我必须防止元素对点击做出反应:我不想点击超链接将我转发到另一个页面、提交表单的按钮等,等等。
我该怎么做?
UPD:我只需要 Chrome
我认为最干净的方法是将一个事件处理程序绑定到body
捕获阶段并防止事件传播/默认行为。
您可以通过以下方式获得对单击元素的引用event.target
:
document.body.addEventListener('click', function(event) {
event.preventDefault();
event.stopPropagation();
console.log(event.target);
}, true);
优点是这个事件处理程序将是第一个被触发的,无论哪个其他事件处理程序绑定到页面中的元素(当然,除非页面绑定了类似的事件处理程序body
,但通常事件处理程序绑定在冒泡阶段)。
有关更多信息,请参阅quirksmode.org - 事件顺序和MDN -addEventListener
。
对于仅 CSS 的解决方案:
* {
pointer-events: none;
}
试试这个
$('body *').on('click',function(e){
return false;
});
在您的click
事件处理程序中,确保您要么调用preventDefault()
事件对象,要么false
从您的函数返回。例如:
function myClickHandler(e) {
e.preventDefault() // e is the event object
// Do your click stuff here
.
.
.
return false; // not required if you've called e.preventDefault()
}