7

在我问这个问题之前,我从来没有发布过这样的问题,但我不明白如何在我的代码中实现它。我有这样的代码

window.onload = function() {
 var url  = getQueryVariable("url");
 document.getElementById('view').src = url;
}
window.onload = function() {
    var linkDirect = document.getElementsByClassName("frame");
    for (var i = 0; i < linkDirect.length; i++) {
        linkDirect[i].href = "http://namablog.blogspot.com/p/demo.html?url=" + linkDirect[i].href
    }
}

那么,如何仅使用一个 window.onload 来执行代码

4

4 回答 4

23

您可以使用addEventListener或任何 jQuery 等效项。

window.addEventListener('load', function (){
    alert('Function #1');
});

window.addEventListener('load', function (){
    alert('Function #2');
});

确保在加载窗口之前调用这些。

于 2013-05-09T14:24:20.933 回答
1

window.addEventListener 在 IE 中不起作用,所以使用 window.attachEvent

你可以做这样的事情

function fun1(){
    // do something
}

function fun2(){
    // do something
}


var addFunctionOnWindowLoad = function(callback){
      if(window.addEventListener){
          window.addEventListener('load',callback,false);
      }else{
          window.attachEvent('onload',callback);
      }
}

addFunctionOnWindowLoad(fun1);
addFunctionOnWindowLoad(fun2);
于 2015-04-10T08:40:17.693 回答
1

只是我的 2 美分,我个人最喜欢的方法如下:

function window_onload(cb) {
    try {
        if (typeof cb == 'function') {
            if (document.readyState == 'complete') cb();
            else if (window.hasOwnProperty('jQuery')) jQuery(window).on('load', cb);
            else if (window['addEventListener']) document.addEventListener('load', cb, false);
            else if (window['attachEvent']) {
                //  iFrame
                if (window['frameElement']) document.attachEvent('onreadystatechange', function(){ if (document.readyState === 'complete') window_onload(cb); });
                else window.attachEvent('onload', cb);
            }
            else {
                var fn = window.onload; // very old browser, copy old onload
                window.onload = function() { fn && fn(); ready(); };
            }
        }
    }
    catch (err) { if (window['console'] && console['error']) console.error("ERROR[window_onload()]", err); }
    return window;
}

这几乎涵盖了所有内容。它没有涵盖哪些小(主要是非常旧的浏览器?),如果需要,您可以轻松调试。如果文档已经“加载”,这也会继续并启动回调。

于 2016-08-13T15:38:59.787 回答
0

对我有用的最简单的解决方案:

function doOnLoad() {
        onloadfn1();
        onloadfn2();
        onloadfn3();
}
window.onload = doOnLoad;

这篇文章已经详细解释了:http: //developer.expressionz.in/blogs/2009/03/07/calling-multiple-windows-onload-functions-in-javascript/

我希望这对你们中的一些人有所帮助。

于 2017-06-29T13:11:27.813 回答