我正在研究一个像JavaScript元素选择器的萤火虫,但无法弄清楚如何在点击时停止所有JavaScript事件触发。萤火虫精简版插件(https://getfirebug.com/firebuglite)正在做我想要的,但无法弄清楚他们在做什么。 任何帮助,将不胜感激。防止所有JavaScript事件发生
塞纳里奥:
- 用户选择元素检查元素 上
- 用户点击
- 的onClick,鼠标按下,鼠标松开应该不火
我都试过,没有运气以下:
function stopEvents(el){
for(var key in window) {
if (key.indexOf("on") == 0)
el.addEventListener(key.substr(2), stop, false);
}
}
function StopEvent(pE)
{
stopEvents(pE);
if (!pE)
if (window.event)
pE = window.event;
else
return;
if (pE.cancelBubble != null)
pE.cancelBubble = true;
if (pE.stopPropagation)
pE.stopPropagation();
if (pE.preventDefault)
pE.preventDefault();
if (window.event)
pE.returnValue = false;
if (pE.cancel != null)
pE.cancel = true;
}
编辑:
$('.somediv').on("click", function(e){
//Stop bubbling and propagation
StopEvent(e);
//EDIT: Still not working with this
e.stopImmediatePropagation();
//RUN only my code here
console.log("My code is running still");
return false;
});
如果有另一个库,如YUI绑定事件到同一个DOM元素。它会在我的后面开火。我似乎无法劫持事件来阻止这种情况的发生。
编辑:
因为我需要能够激发我的活动我不能使用禁用的。如果我做了以下事情,我将无法启动上述事件。我无法附加父事件,因为DOM将停止触发该节点的树上的所有事件。
$('.somediv').on("mouseover", function(e){
$(this).attr("disabled", "disabled");
});
编辑:
我想禁用已创建我的脚本运行前的事件。这些事件可以是任何JavaScript库,如YUI,Dojo,jQuery,JavaScript等......
你尝试返回false?返回false;最后。 – Jeffpowrs
你不能劫持所有事件。但是尝试在'document'的捕获阶段''.stopImmediatePropagation()'。 – Bergi
'disabled'元素不会触发事件。 – Sebas