Re: [ js ] 如何知道 某個元素是否有 Event Listener
你這個辦法是為 Element 新增 observe method,
observe method 執行 addEventListener,
並設定元素的 __eventListeners 屬性來記錄。
不過,站長/路人不會知道我新增了 observe method,(因為我這是Greasemonkey script)
他們仍然會用 addEventListener,而這無法被記錄。
仍然感謝您的回文。
<html>
<head>
<script>
//為 Element 新增 observe method
Element.prototype.observe = function (eventName, handler) {
if(!this.__eventListeners){
this.__eventListeners = [];
}
this.__eventListeners[eventName] = true;//設定 __eventListeners 屬性記錄
this.addEventListener(eventName, handler, false);//執行 addEventListener
}
//為 Element 新增 hasEventListener method
// 執行過 elmnt.observe(eventName, handler);
// 再調用 elmnt.hasEventListener(eventName); 會回傳 true
Element.prototype.hasEventListener = function (eventName) {
return this.__eventListeners ?
(this.__eventListeners[eventName] ? true : false) : false;
}
function init()
{
var test = document.getElementById('test');
alert(test.hasEventListener('click')); // false
test.observe('click', function() {
alert(test.hasEventListener('click')); // true
});
// 如果站長or路人的腳本使用 addEventListener,而非 observe
//test.observe('mouseover', function(){
test.addEventListener('mouseover', function(){
this.value='There is a mouseover event.';
}, false);
alert(test.hasEventListener('mouseover')); // false, not true
//mouseover event is added by addEventListener //而這無法被記錄。
}
</script>
</head>
<body onload="init();">
<input type="button" value="test" id="test">
</body>
</html>
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 58.114.213.80
※ 編輯: shyangs 來自: 58.114.213.80 (12/29 22:27)
討論串 (同標題文章)
Ajax 近期熱門文章
PTT數位生活區 即時熱門文章