Javascript 检测 HTML 元素上可用的事件处理程序

标签 javascript dom events dom-events onload

有没有办法检测 HTML 元素 native 可用的事件处理程序?

例如:

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 可用于元素使用它,否则回退。目前我不得不做浏览器 fork (基于 IE),这很烦人,因为 IE 可能开始支持 script.onload,而 Webkit/Firefox 可能开始支持 link.onload

不幸的是,分配 element.onload 使事件不再是“未定义的”,无论它最终是否会触发。

最佳答案

(编辑见下文,这不起作用。)您可以检查该元素是否具有onload属性:

var img = document.createElement('img');
alert("img onload? " + ('onload' in img));
var script = document.createElement('script');
alert("script onload? " + ('onload' in script));

在 IE7 上,imgtruescriptfalse

编辑 这不适用于 Firefox。留下这个只是为了让其他人不要走同样的路。

关于Javascript 检测 HTML 元素上可用的事件处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2864352/

相关文章:

java - JmenuItem 鼠标按下有效,但鼠标单击事件不起作用?为什么?

javascript - 事件触发两次

javascript - 如何在 soundmanger2 中循环播放音频

javascript - AJAX - 在用户更改页面后接收响应

javascript - 从 DOM 中获取特定列表,同时忽略另一个列表

javascript - 在资源管理器和 firefox 中检测显示器分辨率

javascript - VueJS 数据库操作后刷新内容

javascript - 使用/Javascript 捕获引用 URL 参数并传递给 Google Analytics

javascript - AngularJS:关于基于 AJAX 更改 DOM 的架构的建议

带参数的 Javascript 事件处理程序