Event.observe(window,“load”,function(){..} v / s window.onload = function(){..}

时间:2012-10-12 12:30:36

标签: javascript prototypejs

即使两者都做同样的事情,我只是想知道使用一个在另一个上有什么特别的优势吗?

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

window.onload = function(){
//do something
}

2 个答案:

答案 0 :(得分:11)

不同之处在于window.onload在DOM Level 0事件模型中定义,并将删除所有早期的注册事件。这是来自旧API的“原生”调用。

原型javascript框架中的Event.observe将确定可用的最佳事件附件。门面图案。在现代浏览器中,如果Internet Explorer低于版本9,则会调用addEventListener - attachEvent。在旧浏览器中,将调用onload

很明显,Facade将选择最佳选项,例如Event.observe用于原型,或者.load用于jQuery。

DOM Level 2事件模型中的方法优于DOM Level 0事件模型方法,因为它们充当观察者并且不会删除先前的处理程序。

答案 1 :(得分:0)

阅读quirksmode.org的introduction into events。差异在traditional modeladvanced models之间,需要一个包装器,因为M $不支持W3标准,需要进行区分。