我开发Joomla网站/组件/模块和插件,并且每隔一段时间我都需要使用JavaScript来加载页面时触发事件的功能。在大多数情况下,这是使用window.onload函数完成的。
window.onload
我的问题是:
window.onload = function(){};可以,但是您可能已经注意到, 它只允许您指定1个listener 。
window.onload = function(){};
我想说,这样做的更好/更新的方法是使用框架,或仅使用本机addEventListener和attachEvent(对于IE)方法的简单实现,这也允许您 删除 事件的侦听器。
addEventListener
attachEvent
这是跨浏览器的实现:
// Cross-browser implementation of element.addEventListener() function listen(evnt, elem, func) { if (elem.addEventListener) // W3C DOM elem.addEventListener(evnt,func,false); else if (elem.attachEvent) { // IE DOM var r = elem.attachEvent("on"+evnt, func); return r; } else window.alert('I\'m sorry Dave, I\'m afraid I can\'t do that.'); } // Use: listen("event name", elem, func);
对于window.onload情况,请使用: listen("load", window, function() { });
listen("load", window, function() { });
编辑 我想通过添加其他人指出的宝贵信息来扩大答案。
这与 DOMContentLoaded (Mozilla,Opera和webkit夜间软件当前支持)和 onreadystatechange (适用于IE) 事件有关 ,这些 事件 可以应用于 文档 对象,以了解何时可以操作文档(无需等待所有图像/样式表等)。 ..载入)。
DOMContentLoaded
onreadystatechange
跨浏览器对此有很多“ hacky”实现,因此,我强烈建议为该功能使用框架。