2010-05-11 18 views
28

मैं एक वेबसाइट में निम्नलिखित कोड मिल गया है:JavaScript ईवेंट ट्रिगर नहीं window.onload

window.onload = resize; 
window.onresize = resize; 

function resize(){ 
    heightWithoutHeader = (window.innerHeight - 85) + "px"; 
    document.getElementById("main-table").style.height = heightWithoutHeader; 
    document.getElementById("navigation").style.height = heightWithoutHeader; 
} 

onresize ठीक काम करता है, लेकिन onload घटना कभी नहीं सक्रिय करता है। मैंने इसे फ़ायरफ़ॉक्स और क्रोम में आजमाया है और उनमें से कोई भी काम नहीं करता है।

आपकी मदद के लिए धन्यवाद और प्रतिष्ठा के लिए जाओ! ; डी

+3

आप इस कोड को कब चला रहे हैं? क्या यह संभव है कि 'अधिभार' को बाद में ओवरराइड किया जा रहा है, या 'लोड' घटना के बाद आग लग रही है? –

+0

आप सही थे। window.onload स्पष्ट रूप से बाद में अधिलेखित किया गया था। कृपया अपनी टिप्पणी को उत्तर के रूप में पोस्ट करें, इसलिए मैं इसे सही के रूप में देख सकता हूं। –

+0

हो गया :) खुशी है कि आपने इसे हल किया! –

उत्तर

48

मुझे लगता है कि शायद यहाँ क्या हो रहा है कि आपके window.onload बाद में अधिरोहित किया जा रहा है, सुनिश्चित करें कि आप में alert(window.onload) द्वारा इस जांच कर सकते हैं कि यह <body onload="">

जैसी चीजों के माध्यम से नहीं है करने के लिए जाँच है आपके वास्तव में वहां क्या जुड़ा हुआ है यह देखने के लिए पुनः आकार का फ़ंक्शन।

-3

यदि यह वास्तव में उस क्रम में है, तो यह निश्चित रूप से काम नहीं करेगा। फ़ंक्शन स्वयं घोषित होने से पहले आप किसी ईवेंट हैंडलर को फ़ंक्शन असाइन नहीं कर सकते हैं।

+0

मैंने अभी ऑर्डर बदल दिया है लेकिन यह अभी भी काम नहीं करता है। –

+0

निक क्रेवर ने कहा, यह इसके बड़े संदर्भ को जानना उपयोगी होगा और जब इसे वास्तव में बुलाया जा रहा है। – Syntactic

+1

गलत उत्तर: उसी जावास्क्रिप्ट स्कोप में इसकी अनुमति के बाद एक चर या फ़ंक्शन घोषित करने की अनुमति है, लेकिन अनुशंसित नहीं है। कोशिश करें: "var a = fun (42); फ़ंक्शन मज़ेदार (एन) {वापसी n;}; console.log (ए);" – Francois

0

यह काम हो जाएगा जब आप "window.onload" अगले समारोह आकार()

2

यह मेरे लिए काम करता करने के लिए कॉल, मुझे लगता है कि तुम्हारी समस्या कहीं और है:

function resize(){ 
    var tester = document.getElementById("tester"), 
     html = tester.innerHTML 

    tester.innerHTML = html + "resize <br />" 
} 

window.onload = resize; 
window.onresize = resize; 

आप कर सकते हैं इसे अपने आप यहां जांचें: http://jsfiddle.net/Dzpeg/2/

क्या आप वाकई ऑनलोड नामक एकमात्र ईवेंट हैं? हो सकता है कि एक अन्य onLoad द्वारा स्थापित एक संघर्ष बनाता है

19

ऐसा तब हुआ जब मैंने एक साझेदार के लिए आवश्यक तृतीय पक्ष jQuery कोड जोड़ा। मैं आसानी से अपनी पुरातन विंडो को परिवर्तित कर सकता था। एक jQuery दस्तावेज़ तैयार करने के लिए तैयार करें। उस ने कहा, मैं जानना चाहता था कि क्या आधुनिक दिन है, क्रॉस ब्राउज़र संगत समाधान।

वहाँ है!

window.addEventListener ? 
window.addEventListener("load",yourFunction,false) : 
window.attachEvent && window.attachEvent("onload",yourFunction); 

पता है कि मुझे पता है कि, मैं अपने कोड को jQuery रूट का उपयोग करने के लिए परिवर्तित कर सकता हूं। और, मैं अपने साथी से उनके कोड को दोबारा करने के लिए कहूंगा ताकि वे साइटों को प्रभावित करना बंद कर सकें।

स्रोत जहाँ मैं समाधान मिल जाने ->http://ckon.wordpress.com/2008/07/25/stop-using-windowonload-in-javascript/

0

प्रारंभिक समारोह जावास्क्रिप्ट फ़ाइल के अंत तक या उसके बाद window.onload लाइन ले जाएँ और यह काम करेगा:

function resize(){ 
    heightWithoutHeader = (window.innerHeight - 85) + "px"; 
    document.getElementById("main-table").style.height = heightWithoutHeader; 
    document.getElementById("navigation").style.height = heightWithoutHeader; 
} 
// ... 
// at the end of the file... 
window.onload = resize; 
window.onresize = resize; 

लेकिन यह है यदि आप अधिभार को प्रतिस्थापित नहीं करते हैं तो सबसे अच्छा अभ्यास भी। इसके बजाय अपने फ़ंक्शन को ऑनलोड ईवेंट पर संलग्न करें:

function resize(){ 
    heightWithoutHeader = (window.innerHeight - 85) + "px"; 
    document.getElementById("main-table").style.height = heightWithoutHeader; 
    document.getElementById("navigation").style.height = heightWithoutHeader; 
} 
// ... 
// at the end of the file... 
window.addEventListener ? 
    window.addEventListener("load",resize,false) 
    : 
    window.attachEvent && window.attachEvent("onload",resize); 

यह मेरे लिए काम करता है और मेरी अंग्रेजी के लिए खेद है।

0

मेरे लिए, window.onloadscript type="text/javascript टैग के अंदर लिखा गया था जब काम नहीं कर रहा था।

इसके बजाय, इसे script language="Javascript" type="text/javascript टैग में लिखने की आवश्यकता है और यह ठीक काम करता है।

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