2013-05-09 9 views
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

+0

बस दोनों कार्यों को एक में बदलें। या एक समारोह करें जो दूसरे दो को बुलाता है। –

+0

आपको दो 'ऑनलोड की आवश्यकता क्यों है? –

+1

'addEventListener' के बारे में जानें - https://developer.mozilla.org/en-US/docs/DOM/EventTarget.addEventListener – Ian

उत्तर

22

का उपयोग कर आप addEventListener या किसी jQuery बराबर का उपयोग कर सकते कोड निष्पादन कर सकते हैं।

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

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

कॉल करने के लिए इन से पहले खिड़की भरी हुई है सुनिश्चित करें।

+0

में बदलें, धन्यवाद, मैं कोशिश करता हूं – Zhinto

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

की तरह बस मेरे 2 सेंट कुछ कर सकते हैं, ऐसा करने का मेरा व्यक्तिगत fav तरीका है इस प्रकार है:

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

यह सब कुछ बस सब कुछ के बारे में शामिल है। क्या छोटा (मुख्य रूप से बेहद पुराने ब्राउज़र मुझे लगता है?) इसमें शामिल नहीं है, यदि आवश्यक हो तो आप आसानी से डीबग कर सकते हैं। यह आगे बढ़ता है और कॉलबैक लॉन्च करता है यदि दस्तावेज़ पहले ही 'लोड हो चुका है'।

0

सरल समाधान है कि मेरे लिए काम किया है:

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

यह लेख विवरण में यह स्पष्ट किया गया है: http://developer.expressionz.in/blogs/2009/03/07/calling-multiple-windows-onload-functions-in-javascript/

मुझे आशा है कि यह आप में से कुछ मदद मिलती है।

संबंधित मुद्दे