2

我正在尝试使用“选择”功能进行扩展:让用户单击页面上的任何元素并查看它的 xpath。

但是,为了使其可用,我必须防止元素对点击做出反应:我不想点击超链接将我转发到另一个页面、提交表单的按钮等,等等。

我该怎么做?

UPD:我只需要 Chrome

4

4 回答 4

4

我认为最干净的方法是将一个事件处理程序绑定到body捕获阶段并防止事件传播/默认行为。

您可以通过以下方式获得对单击元素的引用event.target

document.body.addEventListener('click', function(event) {
    event.preventDefault();
    event.stopPropagation();
    console.log(event.target);
}, true);

优点是这个事件处理程序将是第一个被触发的,无论哪个其他事件处理程序绑定到页面中的元素(当然,除非页面绑定了类似的事件处理程序body,但通常事件处理程序绑定在冒泡阶段)。

有关更多信息,请参阅quirksmode.org - 事件顺序MDN -addEventListener

演示

于 2013-06-22T19:29:26.653 回答
3

对于仅 CSS 的解决方案:

* {
    pointer-events: none;
}
于 2013-06-22T19:27:22.543 回答
1

试试这个

$('body *').on('click',function(e){
    return false;
});
于 2013-06-22T19:26:04.213 回答
1

在您的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()
}
于 2013-06-22T19:27:57.613 回答