我有下面的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设置此类处理程序。我倾向于相信他。