2013-05-09 29 views
7

Bevor ich diese Frage stelle, poste ich nie über Fragen wie diese, aber ich verstehe nicht, wie man es in meinen Code einführt. Ich habe Code wie dieserMehrere Javascript window.onload Lösung

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 
    } 
} 

dann, wie kann ich die Code-Ausführung mit nur einer window.onload

+0

Ändern Sie einfach beide Funktionen in einem. Oder machen Sie eine Funktion, die die anderen beiden aufruft. –

+0

Warum brauchen Sie zwei 'onload's? –

+1

Erfahren Sie mehr über 'addEventListener' - https://developer.mozilla.org/en-US/docs/DOM/EventTarget.addEventListener – Ian

Antwort

22

machen Sie addEventListener oder jede jQuery Äquivalent verwenden.

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

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

Seien Sie sicher, dass diese vor das Fenster geladen wird rufen.

+0

dank Moment, den ich versuche – Zhinto

1

window.addEventListener wird nicht in IE funktioniert so window.attachEvent verwenden

Sie können wie diese cents meiner 2

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); 
1

Nur etwas tun, mein persönlicher fav Weg, dies zu tun, ist wie folgt:

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; 
} 

Dies deckt so ziemlich alles ab. Was wenig (hauptsächlich extrem alte Browser, nehme ich an?) Deckt es nicht ab, man könnte bei Bedarf problemlos debuggen. Dies geht auch weiter und startet den Callback, wenn das Dokument bereits 'geladen' ist.

Verwandte Themen