我正在研究一個像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