Event.observe(window, "load", function(){..} 与 window.onload = function(){..} 有何区别?

5

虽然两者都可以完成相同的任务,但我想知道使用其中之一是否有任何特定优势?

Event.observe(window, "load", function(){
//do something
});

window.onload = function(){
//do something
}
2个回答

11
区别在于window.onload是在DOM Level 0事件模型中定义的,会覆盖先前注册的所有事件。它是旧 API 中的“本地”调用。
而来自Prototype JavaScript框架的Event.observe将确定最佳的事件附加器。这是一种外观模式。现代浏览器将调用addEventListener - 在Internet Explorer 9版本以下的情况下调用attachEvent。在旧浏览器中将调用onload
很明显一个外观模式将选择可用的最佳选项,例如Prototype的Event.observe或jQuery中的.load
DOM Level 2事件模型中的方法优于DOM Level 0事件模型中的方法,因为它们充当观察者并不会抹去先前的处理程序。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接