दिलचस्प पोस्ट
उद्देश्य सी: एक बहु-लाइन UITextField कैसे बनाएं? क्या जावास्क्रिप्ट में दिनांक स्वरूपण को संभालने के लिए एक अंतर्निहित फ़ंक्शन या प्लगइन है? स्क्रॉल इवेंट श्रोता जावास्क्रिप्ट जावा में स्विंग जीयूआई के लिए पृष्ठभूमि के रूप में एक छवि कैसे सेट करें? ActionBarSherlock – प्रत्येक एक्शनबार के आइकन के पैडिंग को कैसे सेट करें? Java regex कार्यान्वयन से अनुपलब्ध सुविधाओं को कैसे जोड़ें? पायथन में डिकटाइटर के साथ आउटपुट करते समय CSV फ़ाइल में प्रत्येक डेटा पंक्ति के बीच एक रिक्त पंक्ति क्यों होती है एंड्रॉइड 4 पर एंड्रॉइड स्टूडियो के साथ नोक्लेस डीफफाउंड एरर CSS: मैं XUL और / या HTML में लिपटे जाने के लिए एक लंबी स्ट्रिंग (बिना किसी रिक्त) को कैसे बाध्य कर सकता हूँ मुख्य गतिविधि के लिए OnPostExecute () का नतीजा कैसे प्राप्त करें क्योंकि AsyncTask एक अलग वर्ग है? Android.gms.maps.MapFragment को प्रारंभ करने में असमर्थ स्काला में फिबोनाची समारोह को लिखने का सबसे तेज़ तरीका क्या है? बूटस्ट्रैप 3 ढह गई मेनू क्लिक पर बंद नहीं होता है WCF क्लाइंट `का उपयोग कर 'ब्लॉक समस्या के लिए सबसे अच्छा उपाय क्या है? केवल डिबग बिल्ड के लिए विजुअल स्टूडियो पोस्ट-बिल्ड इवेंट कैसे चलाएं

विंडो का उपयोग करने के लिए सर्वश्रेष्ठ अभ्यास

मैं जूमला वेबसाइटों / घटकों / मॉड्यूल और प्लगइन्स को विकसित करता हूं और हर बार मुझे जावास्क्रिप्ट का उपयोग करने की क्षमता की आवश्यकता होती है, जो पृष्ठ लोड होने पर ईवेंट को ट्रिगर करता है। ज्यादातर समय यह window.onload का उपयोग करके किया जाता है।

मेरा सवाल यह है कि:

  1. क्या यह पृष्ठ लोड होने पर जावास्क्रिप्ट घटनाओं को ट्रिगर करने का सबसे अच्छा तरीका है या बेहतर / नया तरीका है?
  2. यदि पेज लोड होने पर किसी ईवेंट को ट्रिगर करने का यह एकमात्र तरीका है, तो यह सुनिश्चित करने का सबसे अच्छा तरीका क्या है कि कई स्क्रिप्ट अलग-अलग स्क्रिप्ट्स द्वारा चलाए जा सकते हैं?

Solutions Collecting From Web of "विंडो का उपयोग करने के लिए सर्वश्रेष्ठ अभ्यास"

window.onload = function(){}; काम करता है, लेकिन जैसा कि आपने गौर किया हो, यह आपको केवल 1 श्रोता को निर्दिष्ट करने की अनुमति देता है

मैं कहूँगा कि यह करने का बेहतर / नया तरीका एक रूपरेखा का उपयोग करना होगा, या सिर्फ देशी addEventListener और attachEvent (IE के लिए) तरीकों के सरल कार्यान्वयन का उपयोग करने के लिए होगा, जिससे आप श्रोताओं को घटनाओं के रूप में निकाल सकते हैं कुंआ।

यहां एक क्रॉस-ब्राउज़र कार्यान्वयन है:

 // Cross-browser implementation of element.addEventListener() function listen(evnt, elem, func) { if (elem.addEventListener) // W3C DOM elem.addEventListener(evnt,func,false); else if (elem.attachEvent) { // IE DOM var r = elem.attachEvent("on"+evnt, func); return r; } else window.alert('I\'m sorry Dave, I\'m afraid I can\'t do that.'); } // Use: listen("event name", elem, func); 

listen("load", window, function() { }); उपयोग करें: listen("load", window, function() { });


संपादित करें मैं अनमोल सूचना जोड़कर अपना जवाब विस्तारित करना चाहता हूं जो अन्य लोगों द्वारा इंगित किया गया था।

यह DOMContentLoaded (मोज़िला, ओपेरा और वेबकिट रात के समय वर्तमान में इस का समर्थन करता है) और DOMContentLoaded (आईई) घटनाओं के बारे में है जो दस्तावेज ऑब्जेक्ट पर लागू किया जा सकता है, यह समझने के लिए कि दस्तावेज़ जब हेरफेर करने के लिए उपलब्ध है (सभी छवियों / स्टाइलशीट्स आदि। लोड होने के लिए)

इस के क्रॉस-ब्राउज़र समर्थन के लिए बहुत सारे "हैमी" कार्यान्वयन हैं, इसलिए मैं इस सुविधा के लिए एक ढांचा का उपयोग करने का सुझाव देता हूं।

खिड़की। डाउनलोड की घटनाएं कई कृतियों पर ओवरराइड की गई हैं। कार्यों को जोड़ने के लिए window.addEventListener (W3C मानक) या window.attachEvent (IE के लिए) का उपयोग करें। निम्न कोड का उपयोग करें जो काम किया।

 if (window.addEventListener) // W3C standard { window.addEventListener('load', myFunction, false); // NB **not** 'onload' } else if (window.attachEvent) // Microsoft { window.attachEvent('onload', myFunction); } 

आधुनिक जावास्क्रिप्ट चौखटे ने एक "दस्तावेज तैयार" घटना का विचार पेश किया है यह एक ऐसी घटना है, जब वह दस्तावेज तैयार हो जाएंगे जिसके लिए उस पर DOM की छेड़छाड़ की गई है। "ओनलोड" ईवेंट केवल पृष्ठ पर लोड होने के बाद ही सक्रिय होता है।

"दस्तावेज तैयार" घटना के साथ, चौखटे ने जावास्क्रिप्ट कोड के कई बिट्स को कतार करने का एक तरीका प्रदान किया है और जब ईवेंट आग लगने पर कार्य करता है।

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

यदि आप चौखटे के विरोध में नहीं हैं, तो आप jQuery और दस्तावेज़ को देखना चाहते हैं। प्रोजेक्ट प्रोटोटाइप और डॉट : लोडेड , डोजो और ऐडऑनलोड या Google [आपके फ्रेमवर्क] और "दस्तावेज़ तैयार" के लिए।

यदि आपने एक ढांचा नहीं लिया है लेकिन रुचि रखते हैं, तो jQuery प्रारंभ करने के लिए एक अच्छी जगह है। यह किसी भी जावास्क्रिप्ट की मुख्य कार्यक्षमता को परिवर्तित नहीं करता है, और आम तौर पर आपके रास्ते से बाहर निकलता है और आप जब भी चाहें आपको पसंद करते हैं।

Joomla MooTools के साथ जहाजों, तो आप इसे अपने अतिरिक्त कोड के लिए Mootools पुस्तकालय का उपयोग करने के लिए सबसे आसान मिलेगा। एक कस्टम इवेंट के साथ MooTools जहाजों domready कहा जाता है कि जब पेज लोड हो रहा है और दस्तावेज़ पेड़ पार्स है।

 window.addEvent( domready, function() { code to execute on load here } ); 

MooTools के बारे में और जानकारी यहां पाई जा सकती है । जूमला 1.5 वर्तमान में एमटी 1.1 के साथ जहाज़ है जबकि जूमला 1.6 अल्फा में एमटी 1.2 शामिल होंगे

निजी तौर पर, मैं इस पद्धति को पसंद करता हूं। न केवल आपको कई onload कार्य करने की अनुमति है, लेकिन अगर आपको कुछ लिपि इसे परिभाषित करने से पहले परिभाषित करता है, तो यह विधि उस संभाल के लिए बहुत अच्छी है … केवल एक समस्या है, अगर कोई पृष्ठ कई स्क्रिप्ट लोड करता है जो नहीं करता है window.addLoad() फ़ंक्शन का उपयोग करें; लेकिन यह उनकी समस्या है 🙂

पीएस यह बहुत अच्छा है अगर आप "चेन" को बाद में अधिक फ़ंक्शन करना चाहते हैं

यह गंदा लेकिन कम रास्ता है: पी

 function load(){ *code* } window[ addEventListener ? 'addEventListener' : 'attachEvent' ] ( addEventListener ? 'load' : 'onload', function(){} ) 

जैसा कि मैंने हमेशा दस्तावेज के नीचे jQuery / बूटस्ट्रैप जेएस फाइलों को शामिल किया है और दस्तावेज़ पर $ लिए कोई अभिलेख नहीं है, मैंने एक छोटे "init" प्लगइन विकसित किया है जो एक और केवल जेएस स्क्रिप्ट है जो मैं अपने पृष्ठों के शीर्ष पर शामिल करता हूं:

 window.init = new function() { var list = []; this.push = function(callback) { if (typeof window.jQuery !== "undefined") { callback(); } else { list.push(callback); } }; this.run = function() { if (typeof window.jQuery !== "undefined") { for(var i in list) { try { list[i](); } catch (ex) { console.error(ex); } } list = []; } }; if (window.addEventListener) { window.addEventListener("load", this.run, false); } else if (window.attachEvent) { window.attachEvent("onload", this.run); } else { if (window.onload && window.onload !== this.run) { this.push(window.onload); } window.onload = this.run; } }; 

इसका उपयोग करके मैं jQuery और बूटस्ट्रैप शामिल किए जाने से पहले किसी भी अज्ञात लोडर को पृष्ठ पर परिभाषित कर सकता हूं और यह सुनिश्चित कर सकता हूं कि एक बार jQuery चालू हो जाएगा।

 init.push(function() { $('[name="date"]').datepicker({ endDate: '0d', format: 'yyyy-mm-dd', autoclose: true }).on('hide', function() { // $.ajax }); $('[name="keyword_id"]').select2(); });