我有下面的JQuery eventhandler。我想停止网页上的所有导航。

$(document).click(function(event) {
            event.stopPropagation();
            event.preventDefault();
            event.cancelBubble = true;
            event.stopImmediatePropagation();
            $(document).css('border-color','');
            $(document).css('background-color','');
            $(event.target).css('border-color','yellow');
            $(event.target).css('background-color','#6BFF70');
            return false;
    });

当我在Facebook登录页面上使用此按钮时,它将停止所有导航。但是在Google主页上,“我很幸运”按钮仍然可以导航到下一页。如何避免呢?

我正在使用JavaFX浏览器。它类似于Safari浏览器。

最佳答案

如果我加载Google搜索页,并在控制台上执行此操作:

document.body.addEventListener(
  "click",
  function (ev) { ev.stopPropagation(); ev.preventDefault(); },
  true);
那么我就无法再点击“我很幸运”按钮。关键是使用第三个参数并将其设置为true。这是MDN关于它的说法:

(强调)。
您尝试执行的操作无效,因为您的事件处理程序位于document上,因此在文档子级上的所有事件处理程序之后将被称为。因此,您的经理无法阻止任何事情。
useCapture设置为true时,您可以在事件有机会传递给子元素之前对其进行操作。我不知道让jQuery事件处理程序以与useCapture相同的方式工作的方法。 Barmar的answer here说您不能使用jQuery设置此类处理程序。我倾向于相信他。

07-24 18:56
查看更多