有没有办法检测 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 上,img
为 true
,script
为 false
。
编辑 这不适用于 Firefox。留下这个只是为了让其他人不要走同样的路。
关于Javascript 检测 HTML 元素上可用的事件处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2864352/