一千萬個為什麽

搜索

Javascript檢測HTML元素上可用的事件處理程序

有沒有辦法檢測HTML元素本機可用的事件處理程序?

例如:

isAvailable(img.onload) === true;   //All browsers
isAvailable(script.onload) === true;//Non-IE only (Webkit, Firefox, Opera)
isAvailable(link.onload) === true;  //IE (and I think Opera) only

理想情況下,我想在我的腳本中進行功能檢測,如果onload可用於元素使用,則返回。目前我不得不做瀏覽器分支(基於IE)這很煩人,因為IE可能開始支持script.onload,而Webkit/Firefox可能會開始支持link.onload。

不幸的是,分配element.onload會使事件不再“未定義”,無論它最終是否會觸發。

謝謝!

最佳答案

試試這個:

var d = document.createElement('div');

if(d.hasOwnProperty('onclick')) {
    //then onclick is supported
}

你也可以遍歷div(或采取任何其他HTML元素)屬性來動態檢查它:

var d = document.createElement('div'),
   el = 0;

for(el in d) {
    if(d.hasOwnProperty(el)) {
        console.log(d[el]); //or do anything else you like
    }
}

You could check more on hasOwnProperty on mozilla's dev blog

轉載註明原文: Javascript檢測HTML元素上可用的事件處理程序