两个window.onload在网站上

时间:2012-02-17 14:36:12

标签: javascript

我在包含其他调用函数的脚本中使用window.onload

window.onload = function() {
            maxHeight_main_column();
...
}

并在head标签中添加了我的脚本

在正文中我添加了来自其他网站的新脚本再次使用window.onload,我的window.onload工作正常,但是第二个window.onload不起作用,我怎么解决这个问题?

我无法使用window.onlad

编辑第二个文件

3 个答案:

答案 0 :(得分:5)

只能为window.onload分配一个功能。但是,您可以拥有多个侦听同一事件的事件侦听器。

// cross browser way to add an event listener
function addListener(event, obj, fn) {
    if (obj.addEventListener) {
        obj.addEventListener(event, fn, false);   // modern browsers
    } else {
        obj.attachEvent("on"+event, fn);          // older versions of IE
    }
}

addListener('load', window, myFunc1);    // you can have multiple ones of these
addListener('load', window, myFunc2);    // you can have multiple ones of these
window.onload = myFunc3;                 // one and only one of these

有关详细信息,请参阅MDN doc on addEventListener

在您的特定情况下,您可以将此代码用于onload处理程序,让另一个使用window.onload

// cross browser way to add an event listener
function addListener(event, obj, fn) {
    if (obj.addEventListener) {
        obj.addEventListener(event, fn, false);   // modern browsers
    } else {
        obj.attachEvent("on"+event, fn);          // older versions of IE
    }
}
addListener('load', window, function() {
    maxHeight_main_column();
    ...
});

答案 1 :(得分:1)

您可以使用下一个函数添加多个onLoad侦听器(从here复制):

function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}

答案 2 :(得分:-5)

包含jQuery并使用它:

$(document).ready(function() {
    maxHeight_main_column();
})