2017-03-01 9 views
11

एक बार एक बार, <script> पर <head> या <body> पर कई गर्म बहसें हुईं।किसी भी अच्छे कारण का उपयोग नहीं करना <script defer> आज?

कई अतः पदों पहले ही बताया था सबसे अच्छा अभ्यास अंगूठे की/नियम HTML पार्सर अवरुद्ध नहीं, तेजी से पहले स्क्रीन रंग और ग्राहक के लिए जल्दी डोम पहुँच जिसके परिणामस्वरूप के लिए <body> के अंत से पहले <script> जगह है, और इस प्रकार एक बेहतर यूएक्स।

यह एक duplicate╰ (`□ ') ╯

प्रतीक्षा ... <script> अब deferred हो सकता है, वास्तव में काफी कुछ समय के लिए किया जाना चाहिए!

पुराने पदों कहा

आस्थगित स्क्रिप्ट मई

नहीं, यह नहीं होगा परिणाम जे एस निर्भरता मुद्दों। जब डीओएम पार्स हो जाता है तो यह तुरंत निष्पादन पर आदेश को बरकरार रखता है।

यह पार विक्रेताओं

हाँ, यह एक बार काम नहीं करता है, लेकिन आज यह लगभग सभी प्रमुख ब्राउज़र विक्रेताओं द्वारा समर्थित है: http://caniuse.com/#search=defer, के अलावा < टिप्पणी के रूप में 10 IE के साथ कुछ समस्या हो सकती है इशारा करना।

हालांकि, यह लाभ कम से कम मेरे लिए स्पष्ट रूप से दिखाई देता है, क्योंकि यह पहले के समय में समानांतर में स्क्रिप्ट डाउनलोड करता है (डीओएम को पार्स करने से पहले), इस प्रकार बाद में स्क्रिप्ट का अनुरोध करने की आवश्यकता नहीं होती है और उस समय को कम करने की आवश्यकता नहीं होती है पूरे पृष्ठ को लाने के लिए इंटरैक्टिव

कम होने के लिए, इस सवाल के समान है:

<body> 
... 
<script src='cdn/to/jquery'> 
<script src='cdn/to/bootstrap'> 
<script src='script/depends/on/jqueryandbootstrap'> 
</body> 

ध्यान दें:: यह एक "प्राचीन" विषय हो सकता है किसी भी अच्छे कारण के बजाय का उपयोग कर इस

<head> 
... 
<script src='cdn/to/jquery' defer> 
<script src='cdn/to/bootstrap' defer> 
<script src='script/depends/on/jqueryandbootstrap' defer> 
</head> 

उपयोग करने के लिए नहीं कई चर्चाओं के साथ। हालांकि, जैसे-जैसे वेब तकनीक वास्तव में तेज़ी से आगे बढ़ती है, ब्राउज़र विक्रेता नए वेब चश्मा के साथ बेहतर और अधिक संगत होते हैं, कई पुराने स्टैक ओवरफ्लो उत्तरों अद्यतित नहीं रह सकते हैं।

+4

कैनियस में एक नोट है कि आईई <10 टूटा जा सकता है - मेरी राय में, अब 'defer'' का उपयोग शुरू करने का एक अच्छा कारण है: पी –

+4

[यहां कुछ अच्छी पढ़ाई है।] (Http: //www.growingwiththeweb .com/2014/02/async-vs-defer-attributes.html) – Pointy

+0

@ पॉइंटी मैंने देखा है, यह एक अच्छा दृश्य है, इसके अलावा मुझे लगता है कि 'async' और' defer' दोनों को कुल समय कम करना चाहिए। – Xlee

उत्तर

1

हाँ, लेकिन केवल इसलिए कि आप jQuery का उपयोग कर रहे हैं।

jQuery doesn't work with defer क्योंकि जैसे ही पृष्ठ इंटरैक्टिव हो जाता है, यह आग लगने की कोशिश करता है। वे इसे किसी भी समय ठीक नहीं कर सकते हैं (मैंने एक साल पहले उस बग को उठाया था) क्योंकि defer के साथ काम करने के लिए तैयार व्यवहार को बदलना बहुत सारे घटकों को तोड़ देगा जो इंटरैक्टिव पर jQuery की तैयार घटना फायरिंग पर भरोसा करते हैं (यानी स्थगित स्क्रिप्ट लोड होने से पहले)।

यदि आप अधिक आधुनिक ढांचे (प्रतिक्रिया, कोणीय 2, पॉलिमर, वू, या बस कुछ और के बारे में) का उपयोग कर रहे हैं तो इसके लिए जाएं - या फिर अगले चरण पर जाएं और नए ब्राउज़र में <script type=module का उपयोग करें और विरासत आईई के लिए <script nomodule defer... में बंडल।

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