questions - javascript programs




window.onload बनाम<body onload=""/> (9)

window.onload बीच क्या अंतर है। घटना window.onload और body टैग की onload घटना? मैं कब उपयोग करता हूं और इसे सही तरीके से कैसे किया जाना चाहिए?


<body onload = ""> विंडो को ओवरराइड करना चाहिए।

<Body onload = ""> के साथ, document.body.onload ब्राउज़र के आधार पर शून्य, अपरिभाषित या फ़ंक्शन हो सकता है (हालांकि getAttribute ("onload") किसी स्ट्रिंग के रूप में अज्ञात फ़ंक्शन के शरीर को प्राप्त करने के लिए कुछ हद तक संगत होना चाहिए) । Window.onload के साथ, जब आप इसे फ़ंक्शन असाइन करते हैं, तो window.onload ब्राउज़र में लगातार एक फ़ंक्शन होगा। यदि यह आपके लिए महत्वपूर्ण है, तो window.onload का उपयोग करें।

windows.onload जेएस को आपकी सामग्री से अलग करने के लिए बेहतर है। जब आप window.onload का उपयोग कर सकते हैं तो <body onload = ""> का उपयोग करने के लिए बहुत अधिक कारण नहीं है।

ओपेरा में, window.onload और <body onload = ""> (और यहां तक ​​कि window.addEventListener ("load", func, false) के लिए ईवेंट लक्ष्य सफारी और फ़ायरफ़ॉक्स जैसे दस्तावेज़ की बजाय विंडो होगी। लेकिन, 'यह' ब्राउज़र में खिड़की होगी।

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


एक उद्देश्य प्रश्न के इतने सारे व्यक्तिपरक उत्तर। "अविभाज्य" जावास्क्रिप्ट पुरानी नियम की तरह अंधविश्वास है जो कभी भी गेटोस का उपयोग नहीं करता है। कोड को ऐसे तरीके से लिखें जो आपको अपने लक्ष्य को विश्वसनीय रूप से पूरा करने में मदद करता है, न कि किसी के आधुनिक धार्मिक मान्यताओं के अनुसार।

कोई भी जो पाता है:

 <body onload="body_onload();">

अत्यधिक विचलित होने के लिए अत्यधिक भयावहता है और उनकी प्राथमिकताओं को सीधे नहीं है।

मैं सामान्य रूप से एक अलग .js फ़ाइल में अपना जावास्क्रिप्ट कोड डालता हूं, लेकिन मुझे HTML में ईवेंट हैंडलर को हुकिंग करने के बारे में कुछ भी नहीं लगता है, जो कि वैध HTML है।


कोई फर्क नहीं पड़ता है, लेकिन आपको या तो इसका उपयोग नहीं करना चाहिए।

कई ब्राउज़रों में, window.onload ईवेंट ट्रिगर नहीं किया जाता है जब तक कि सभी छवियों को लोड नहीं किया जाता है, जो आप नहीं चाहते हैं। मानक आधारित ब्राउज़रों में DOMContentLoaded नामक एक ईवेंट DOMContentLoaded जो पहले आग लगती है, लेकिन यह IE द्वारा समर्थित नहीं है (इस उत्तर को लिखने के समय)। मैं एक जावास्क्रिप्ट लाइब्रेरी का उपयोग करने की अनुशंसा करता हूं जो एक क्रॉस ब्राउज़र DOMContentLoaded सुविधा का समर्थन करता है, या एक अच्छी तरह लिखित फ़ंक्शन ढूंढ सकता है जिसका आप उपयोग कर सकते हैं। jQuery का $(document).ready() , एक अच्छा उदाहरण है।


मैं आम तौर पर <body onload="" > घटना का उपयोग नहीं करना पसंद करता हूं। मुझे लगता है कि जितना संभव हो सके व्यवहार से व्यवहार को अलग रखना स्वच्छ है।

उस ने कहा, अवसर हैं (आमतौर पर मेरे लिए बहुत दुर्लभ) जहां शरीर अधिभार का उपयोग थोड़ा सा गति प्रदान कर सकता है।

मैं प्रोटोटाइप का उपयोग करना पसंद करता हूं इसलिए मैं आमतौर पर इस तरह के कुछ पेज को <head > में डालता हूं:

document.observe("dom:loaded", function(){
  alert('The DOM is loaded!');
});

या

Event.observe(window, 'load', function(){
  alert('Window onload');
});

उपरोक्त चालें मैंने here सीखी here । मैं HTML के बाहर संलग्न ईवेंट हैंडलर की अवधारणा का बहुत शौकिया हूं।

(कोड में वर्तनी गलती को सही करने के लिए संपादित करें।)


यदि आप डीओएम में निश्चित रूप से <body onload = "">> का उपयोग करना चाहते हैं। इस तरह घटना को टॉम लोड होने पर ट्रिगर किया जाएगा। अन्यथा खिड़की के बीच अंतराल है। घटना लोड करें और डोम लोड हो रहा है ताकि आप उस वस्तु को घुमाने में घुमा सकें जो मौजूद नहीं है। मैं jquery और $(document).ready(function(){}) का उपयोग करने का सुझाव $(document).ready(function(){}) । यह सबसे अच्छा काम करेगा


यह सामग्री, लेआउट और व्यवहार अलग करने के लिए एक स्वीकार्य मानक है। तो window.onload () <body onload=""> से उपयोग करने के लिए अधिक उपयुक्त होगा <body onload=""> हालांकि दोनों एक ही काम करते हैं।


window.onload = myOnloadFunc और <body onload="myOnloadFunc();"> एक ही घटना का उपयोग करने के विभिन्न तरीके हैं। window.onload का उपयोग करना कम अवरोधक है - यह आपकी जावास्क्रिप्ट को HTML से बाहर ले जाता है।

सभी सामान्य जावास्क्रिप्ट पुस्तकालयों, प्रोटोटाइप, एक्सटीजेएस, डोजो, JQuery, YUI, आदि दस्तावेज़ों के लोड होने के दौरान होने वाली घटनाओं के आसपास अच्छे रैपर प्रदान करते हैं। आप खिड़की ऑनलोड ईवेंट के लिए सुन सकते हैं, और उस पर प्रतिक्रिया कर सकते हैं, लेकिन सभी संसाधनों को डाउनलोड होने तक ऑनलोड को निकाल दिया नहीं जाता है, इसलिए आपके ईवेंट हैंडलर को तब तक निष्पादित नहीं किया जाएगा जब तक कि आखिरी विशाल छवि प्राप्त नहीं की जाती। कुछ मामलों में यह वही है जो आप चाहते हैं, दूसरों में आप पाते हैं कि जब डोम तैयार होता है तो यह सुनना अधिक उपयुक्त होता है - यह घटना ऑनलोड के समान होती है लेकिन डाउनलोड करने के लिए छवियों के इंतजार किए बिना आग लगती है।


window.onload - सभी डोम, जेएस फाइलों, छवियों, इफ्रेम, एक्सटेंशन और अन्य पूरी तरह से लोड होने के बाद बुलाया गया। यह $ (विंडो) के बराबर है। लोड (फ़ंक्शन () {});

body onload="" - डीओएम लोड होने के बाद बुलाया जाता है। यह $ (दस्तावेज़) के बराबर है। पहले से ही (फ़ंक्शन () {});


कोई अंतर नहीं है ...

तो मुख्य रूप से आप दोनों का उपयोग कर सकते हैं (एक समय में! -)

लेकिन पठनीयता के लिए और एचटीएमएल कोड की सफाई के लिए मैं हमेशा खिड़की पसंद करता हूं। लोड! ओ]





javascript