दिलचस्प पोस्ट
स्विफ्ट: अलग ऑब्जेक्ट इंस्टेंस के डिफॉल्ट वैल्यू के साथ एक एरे बनाना allowDefinition = 'MachineToApplication' त्रुटि जब VS2010 से प्रकाशित होता है (लेकिन केवल पिछले बिल्ड के बाद) क्या मैं सरणी के एक-अतीत-अंत वाले तत्व का पता ले सकता हूं? आईफ़्रैम के अंदर डिव स्टाइल को प्रभावित करने के लिए सीएसएस का उपयोग करना शुरुआतीकरण पर बिट्स आकार को परिभाषित करें? RabbitMQ / AMQP: एकल क्यूई, एक ही संदेश के लिए कई उपभोक्ताओं? MySQL में तिथियों की तुलना करें नमूनों में फ़्लैटन और रावेल फ़ंक्शंस के बीच अंतर क्या है? सिस्टम ओवरले विंडो बनाना (हमेशा शीर्ष पर) सीएसएस के साथ चुने हुए ऑप्ट-ग्रुप के कई स्तरों को इंडेंट कैसे करें? टी-एसक्यूएल पायवोट? पंक्ति मानों से तालिका स्तंभ बनाने की संभावना जावा में एक विशिष्ट वर्ग के सभी ऑब्जेक्ट उदाहरण प्राप्त करने का कोई आसान तरीका क्या है? ऑटो इंप्रेशन आईडी हाइबरनेट करें एक उपलब्ध पोर्ट कैसे खोजें? MVVM लाइट टूलकिट का उपयोग करके नई विंडो कैसे खोलें

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

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

वेब के समाधान से एकत्रित समाधान "window.onload बनाम <body onload = "" />"

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

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

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

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

window.onload शरीर के बिना काम कर सकते हैं। केवल स्क्रिप्ट टैग के साथ पृष्ठ बनाएं और इसे ब्राउज़र में खोलें। पृष्ठ में कोई भी शरीर नहीं है, लेकिन यह अभी भी काम करता है ..

 <script> function testSp() { alert("hit"); } window.onload=testSp; </script> 

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

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

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

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

या

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

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

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

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

जो भी खोजता है:

  <body onload="body_onload();"> 

अधिकतर ध्यान भंग करने के लिए अति प्रफुल्लित करने वाला है और उनकी प्राथमिकताएं सीधे नहीं हैं

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

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

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

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

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

body onload="" – एक बार डॉम लोड किया गया। यह $ (दस्तावेज़) के बराबर है .ready (function () {});

यदि आप विनीत जेएस कोड लिखने का प्रयास कर रहे हैं (और आपको होना चाहिए), तो आपको <body onload=""> उपयोग नहीं करना चाहिए।

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

किसी अन्य विशेषता की तरह लोड पर विचार करें इनपुट बॉक्स पर, उदाहरण के लिए, आप इसे डाल सकते हैं:

 <input id="test1" value="something"/> 

या आप कॉल कर सकते हैं:

 document.getElementById('test1').value = "somethingelse"; 

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

इसके अलावा, यहां दूसरों की तरह ये कह रहे हैं, आमतौर पर यह शैली और जावास्क्रिप्ट को पृष्ठ की सामग्री से अलग रखने के लिए क्लीनर है, यही वजह है कि ज्यादातर लोग खिड़की का उपयोग करने की सलाह देते हैं। डाउनलोड या jQuery के तैयार फ़ंक्शन

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

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

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

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

इसका क्या मतलब यह है कि, जब यह मामला है, तो आप को कुचलने और चीजों को सुसंगत बनाने या एक पुस्तकालय का उपयोग करना चाहिए जो आपके लिए यह करता है

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

किसी भी जेएस फ्रेमवर्क में ईवेंट हैंडलर के लिए क्रॉस-ब्राउज़र विधियां होंगी।

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

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