window.onload被认为是一个全局变量,我可以把它放在我的模块模式中吗?

时间:2011-11-17 19:18:09

标签: javascript

我在模块模式中重构了大约600行javascript。这是以前post的开头: 我承认匿名方法的概念......和执行......但不是范围的概念......即。全球和窗户的作用。

window.onload=initialize_page;

(function (global) {  
 global['test'] = 'test'; 

function initialize_page()
  {
  /* fill  here */
  }

})(window); 

我可以将window.onload = initialize_page放入我的模块模式吗?还是需要把它放在外面?有人可以解释访问的工作原理吗?

编辑1:每个答案

(function () {  

addEventListener('load', initialize_page);

function initialize_page()
  {
  alert ("hi");
  }

})(); 

2 个答案:

答案 0 :(得分:1)

这是全球性的。不要那样触摸它,你将覆盖任何试图分配负载处理程序的其他代码。

使用addEventListener(或attachEvent代替旧版IE)。有很多libraries来抽象功能。

答案 1 :(得分:0)

我不是专家,但我认为window.onload是一个被调用的函数,因此您将其重置为另一个函数(您创建的函数)。你在那里用它作为一个宏。由于initialize_page在您传递时不存在,因此它可能会以window.onload传递给null