मैंने देखा है कि कुछ स्क्रिप्ट किसी अन्य पृष्ठ पर दूसरों के सामने बुलाए जाने लगते हैं, मैं सोच रहा था, स्क्रिप्ट लोड करने के लिए विशिष्ट क्रम क्या है? संदर्भित .js स्क्रिप्ट से पहले पृष्ठ में? क्या वे पृष्ठ में अंतिम बार उल्लिखित <script>
से क्रम में चल रहे हैं, या यह ब्राउज़र-निर्भर है? कोई यह सुनिश्चित कैसे कर सकता है कि किसी पृष्ठ में एक विशिष्ट स्क्रिप्ट चलाना सबसे पहले हो?सुनिश्चित करें कि जावास्क्रिप्ट स्क्रिप्ट पहले चलाने के लिए है?
उत्तर
मैंने देखा है कि कुछ स्क्रिप्ट किसी अन्य पृष्ठ पर दूसरों के सामने बुलाए जाने लगते हैं। मैं सोच रहा था, स्क्रिप्ट लोड करने के लिए विशिष्ट क्रम क्या है?
यह उनकी भाषा विनिर्देशों में डब्ल्यू 3 सी द्वारा निर्धारित है। उदाहरण के लिए, HTML 4.01 Specification के लिए, इसे Section 18.2.4 Dynamic modification of documents, item 1 में परिभाषित किया गया है।
संदर्भित .js स्क्रिप्ट से पहले पृष्ठ में?
ऊपर देखें। नहीं, इनलाइन और लिंक्ड स्क्रिप्ट समान रूप से संभाले जाते हैं।
क्या वे पहले उल्लिखित पृष्ठ, से पहले क्रम में चल रहे हैं या यह ब्राउज़र-निर्भर है?
विनिर्देशों को क्रमशः ऊपर से नीचे तक चलाने के लिए कॉल करें। आपको एक ब्राउज़र खोजना होगा जो विनिर्देश के अनुसार भाषा लागू करता है। मैं अब किसी भी समय के बारे में सोच नहीं सकता जो एससीआरआईपीटी टैग को अलग-अलग संभालता है, लेकिन मुझे यकीन है कि यह संभव है।
विचार करने की एक और बात "रन" की परिभाषा है। यह अर्थपूर्ण पार्सिंग की तरह लग सकता है, लेकिन यह नहीं है। जावास्क्रिप्ट, किसी भी प्रोग्रामिंग भाषा की तरह, खुद को मानकों के अनुसार व्यवहार करने के लिए डिज़ाइन किया गया है। धारा 7 लेक्सिकल सम्मेलनों में बाएं से दाएं का मूल्यांकन करने के लिए जावास्क्रिप्ट को ECMA-262 5.1 Edition/June 2011 standard में निर्दिष्ट किया गया है। (रेखा के अंत को अगली पंक्ति के बाएं-सबसे चरित्र के रूप में माना जाता है।) यह दस्तावेज़ उस आदेश के लिए सम्मेलन भी प्रदान करता है जिसमें विवरण और अन्य परिचालनों का मूल्यांकन किया जाता है, जैसे WHILE या विवरण के लिए।
कोई यह सुनिश्चित कैसे कर सकता है कि किसी पृष्ठ में एक विशिष्ट स्क्रिप्ट चलाना सबसे पहले हो?
(1) इसे शीर्ष पर रखें, और (2) एक ब्राउज़र चुनें जो भाषा विनिर्देश लागू करता है।
हालांकि, मुझे लगता है कि इस प्रश्न के पीछे कुछ और हो सकता है। यदि आप निष्पादित होने से अप्रत्याशित कोड को रोकने की कोशिश कर रहे हैं, तो आपको इसे तब तक अवरुद्ध करना होगा जब तक कि अपलोड ईवेंट हैंडलर पंजीकृत नहीं करता है कि पृष्ठ पूरा हो गया है। (बस एक ऑपरेशन को अपने फ़ंक्शन में संलग्न करें या उन्हें एक बूलियन ध्वज की जांच करने के लिए IF के साथ घिराएं, यानी अपलोड द्वारा सेट किया गया है।), जब अपलोड ईवेंट हैंडलर बंद हो जाता है, तो आप बिना अपने शेड्यूल पर ऑपरेशन बंद कर सकते हैं uninstantiated डीओएम वस्तुओं की तरह चीजों के बारे में चिंता करने के लिए।
जब तक कोई स्क्रिप्ट गतिशील रूप से लोड या एसिंक या डिफर के रूप में चिह्नित नहीं होती है, तब तक पृष्ठ में आने वाले क्रम में स्क्रिप्ट चलाए जाते हैं या मूल्यांकन किए जाते हैं। तो, पहली स्क्रिप्ट पहले दौड़ने का सामना करना पड़ा।
एक बाहरी संदर्भित स्क्रिप्ट फ़ाइल जो लोड की जानी चाहिए, सभी बाहरी जावास्क्रिप्ट निष्पादन का इंतजार तब तक कर देगा जब तक कि बाहरी संदर्भित फ़ाइल लोड नहीं हो जाती है और पार्स किया जाता है और चलाता है।
तो, सामान्य (गैर-एसिंक, गैर-स्थगित) जावास्क्रिप्ट का मूल्यांकन क्रम पृष्ठ में आने वाले क्रम के रूप में 100% निर्धारित है।
डिफ़ॉल्ट रूप से, script
टैग डाउनलोड किए जाते हैं और क्रमशः मूल्यांकन किए जाते हैं क्योंकि उन्हें HTML दस्तावेज़ में सामना करना पड़ता है।
लेकिन यदि आप async
या defer
विशेषताओं का उपयोग, निष्पादन होता है या तो स्क्रिप्ट खत्म डाउनलोड करने (async) के बाद या के बाद पृष्ठ को लोड किया जाता है (स्थगित)।
पार्सिंग के बाद तक * डिफर * विशेषता स्टॉलिंग निष्पादन पर भरोसा न करें (अन्यथा यह लोड और तैयार घटनाओं के लिए एक अच्छा विकल्प होगा)। एचटीएमएल 4 में, [डिफर] (http://www.w3.org/TR/html401/interact/scripts.html#adef-defer) केवल एक संकेत था कि स्क्रिप्ट ने सामग्री नहीं बनाई थी ताकि ब्राउजर लोड करना जारी रख सके इसे निष्पादित करते समय। एचटीएमएल 5 में, [defer] (http://www.w3.org/TR/html5/scripting-1.html#attr-script-defer) का अर्थ है "पार्सिंग समाप्त होने तक प्रतीक्षा करें"। एचटीएमएल 5 पर्याप्त रूप से समर्थित नहीं है कि निर्दिष्ट व्यवहार पर भरोसा किया जा सकता है, शायद कुछ वर्षों तक नहीं। – RobG
लिपियों को एचटीएमएल फ़ाइल में मूल्यांकन के क्रम में चलाया जाता है, जैसा कि आप इसे ऊपर से पढ़ते हैं।
हालांकि, एसिंक और डिफरर उन ब्राउज़रों के लिए इसे ओवरराइड कर सकते हैं, जिन्हें लागू किया गया है।
- 1. एएसपीनेट सुनिश्चित करें कि जावास्क्रिप्ट को केवल
- 2. यह सुनिश्चित करने के लिए कैसे करें कि फास्टसीजीआई का उपयोग php स्क्रिप्ट चलाने के लिए किया जा रहा है
- 3. सुनिश्चित करें कि पहले AJAX फ़ंक्शन दूसरे एक
- 4. PHP स्क्रिप्ट चलाने के लिए बैश स्क्रिप्ट
- 5. मैं कैसे सुनिश्चित कर सकता हूं कि मेरी बैश स्क्रिप्ट पहले से चल रही नहीं है?
- 6. जावास्क्रिप्ट कि एक स्क्रिप्ट
- 7. यह सुनिश्चित करने के लिए कि
- 8. मैं जावास्क्रिप्ट चलाने से पहले डी 3 को कई सीएसवी लोड करने के लिए कैसे सुनिश्चित करूं?
- 9. यह सुनिश्चित करने के लिए कि बिल्डआउट पहले से स्थापित संकुल का उपयोग नहीं करता है?
- 10. एक स्क्रिप्ट चलाने के लिए ipython प्रारंभ करें
- 11. यह सुनिश्चित करने के लिए कि एंड्रॉइड
- 12. यह सुनिश्चित करने के लिए कि वे
- 13. शेफ, सेवा बनाने से पहले एक init.d स्क्रिप्ट बनाता है जो टेम्पलेट को चलाने के लिए
- 14. सुनिश्चित करें कि एक PHP स्क्रिप्ट केवल क्रॉन नौकरी के रूप में चलती है?
- 15. प्रारंभ करें या सुनिश्चित करें कि जब कोई एप्लिकेशन/सर्वर
- 16. फॉर्म जावास्क्रिप्ट चलाने के लिए सबमिट करें और फिर php स्क्रिप्ट
- 17. सुनिश्चित करें कि एनएचबीर्नेट सत्र फ़ैक्टरी केवल
- 18. AjaxControlToolkit को एएसपी.NET अजाक्स 4.0 स्क्रिप्ट की आवश्यकता है। सुनिश्चित करें कि स्क्रिप्ट के सही संस्करण को
- 19. सुनिश्चित करें कि ऑब्जेक्ट्स लागू करने योग्य
- 20. सुनिश्चित करें कि fgetcsv() पूरी लाइन
- 21. Unproven सुनिश्चित करें कि एक अंतरफलक
- 22. सुनिश्चित करें कि jQuery ईवेंट हैंडलर निष्पादन आदेश
- 23. एकाधिक प्रक्रियाओं को चलाने के लिए शैल स्क्रिप्ट
- 24. निर्धारित करें कि एक रूबी स्क्रिप्ट पहले से चल रही है
- 25. सुनिश्चित करें कि सभी डिफ़ॉल्ट पैकेज चलने से पहले लोड किए गए हैं। प्रोप्रोफाइल
- 26. यह सुनिश्चित करने के लिए कि मेरा jQuery। पहले से ही
- 27. यह सुनिश्चित करने के लिए कि जेएस को एएसएक्स फ़ाइल में शामिल किया गया है?
- 28. किसी अन्य जावास्क्रिप्ट को चलाने से पहले UIWebView में जावास्क्रिप्ट चलाना
- 29. सुनिश्चित करें कि डब्ल्यूपीएफ टास्कबार विंडो पूर्वावलोकन वास्तविक है
- 30. बैच स्क्रिप्ट व्यवस्थापक के रूप में चलाने के लिए
कृपया ईसीएमए -262 संस्करण 5+ से इसके लिए एक संदर्भ प्रदान करें जो घोषणा करता है कि मानकों के अनुसार यह निर्दिष्ट व्यवहार है। क्या आप निश्चित हैं कि यह सभी ब्राउज़रों और प्लेटफॉर्म पर इस तरह से काम करता है और यह सिर्फ एक झलक नहीं है? – ingyhere
@ingyhere - मुझे नहीं पता कि इस पर कोई संदर्भ कहां है, मेरे पास अभी देखने का समय नहीं है। यह तरीका जावास्क्रिप्ट काम करता है - अगर आपके पास इसे चुनौती देने का कोई कारण है, तो कृपया उस कारण को बताएं। जावास्क्रिप्ट ऊपर/नीचे से निष्पादित करता है। यह बिल्कुल ब्राउज़र में संगत होना चाहिए या बहुत सारे पेज तोड़ेंगे क्योंकि लोग हर समय ऊपर से नीचे तक जावास्क्रिप्ट पर भरोसा करते हैं। बहुत सी भाषा को कोड के विभिन्न हिस्सों के बीच गारंटीकृत निष्पादन आदेश प्रदान करना पड़ता है क्योंकि अक्सर आपके तर्क को काम करने की आवश्यकता होती है। – jfriend00
यहाँ एक संदर्भ है: http://docstore.mik.ua/orelly/webprog/jscript/ch12_03.htm – jfriend00