2015-01-12 68 views
0

HTML元素(DOM節點)是否可能始終只有一個事件偵聽器?(意思是不應該再有可能將輔助事件附加到預定義(第一個)事件之外監聽器)。限制HTML中元素的事件偵聽器

實施例:

<input type="button" id="button1" value="I HAVE ONLY ONE EVENT LISTENER" onclick="one_and_only_eventhandler()"/> 

那麼它不應該是可以添加使用addEventListener /的attachEvent/ONCLICK屬性進一步輔助事件。

或者說它是HTML元素(DOM節點)應該只聽第一個事件偵聽器,而不應該聽次要事件的另一種方式。

+0

每個事件類型,是的。 https://developer.mozilla.org/en-US/docs/Web/API/Event.stopImmediatePropagation –

+0

@Kevin B,event.stopImmediatePropogation確實阻止了其他事件偵聽器,但這樣做應該發生在默認事件偵聽器內部;但是如果添加的事件偵聽器在默認的偵聽器之前執行,該怎麼辦?所以爲了使它工作,使用onclick指定的內聯回調應該先調用,以便可以使用event.stopImmediatePropogation – priyanka

+0

這是正確的,它必須是第一個。我沒有說這是一個優雅或傻瓜證明的解決方案,它只是......「可能」。 –

回答

0

你不能真的阻止這種情況,因爲大多數事件首先經過捕獲階段,並且代碼可以在文檔級別上註冊一個事件偵聽器,在捕獲點擊到達內聯處理程序很久之前。

無論如何,內聯處理程序通常是不鼓勵的。你試圖去做的事情聽起來像是在與其他JavaScript代碼「鬥爭」,或者你的程序設計依賴於DOM事件不支持的東西。兩種情況都非常脆弱。