2009-06-30 18 views
5

होने का कोई अच्छा कारण है, मैं एक साइट बना रहा हूं। कुछ स्तर पर मैंने देखा कि आईई डिस्प्ले थोड़ा टूटा हुआ था और क्रोम के पास कुछ भी नहीं था लेकिन शरीर टैग (खाली), और एफएफ सभी को अच्छा लगा।क्या जावास्क्रिप्ट को इनलाइन

कमरे के चारों ओर अपना कीबोर्ड फेंकने और मेरे माउस के खिलाफ मेरे सिर को धक्का देने के बाद, मुझे समस्या मिली। मैंने छोड़ा था (पूछें कि कैसे या क्यों, कुछ बिजली की गति कट और पेस्ट त्रुटि होनी चाहिए) एक HTML टिप्पणी एक इनलाइन स्क्रिप्ट ब्लॉक में संलग्न है।

<script type="text/javascript"> 
     <!-- 
     ... 
    </script> 

मेरा अनुमान है कि (परीक्षण नहीं) समस्या है, या तो आया नहीं है या एक कहीं अधिक ध्यान देने योग्य रास्ते में स्वयं प्रकट होता अगर स्क्रिप्ट बाहरी था। तो वैसे भी, मुझे सोचने के लिए, क्या कभी ऐसा समय है जब आपके पास इनलाइन स्क्रिप्ट लिखने का वास्तव में अच्छा कारण है ??

+4

स्क्रिप्ट टैग के भीतर HTML टिप्पणियों का उपयोग करने में कोई बात नहीं है। पुराने ब्राउज़र को टेक्स्ट के रूप में प्रदर्शित करने वाले पुराने ब्राउज़र को रोकने के लिए नेटस्केप नेविगेटर 2 (1 99 6 के आसपास) जब उन्हें वापस की आवश्यकता थी, तब उनकी आवश्यकता थी। यह अब दस वर्षों से अधिक समय तक कोई समस्या नहीं है, इसलिए उनसे परेशान न हों। – NickFitz

+0

हाँ मुझे पता है। यह एक पूरी त्रुटि थी। मैं उन्हें जेएस में उपयोग नहीं करता, इसलिए मैंने उल्लेख किया कि यह एक कट-एंड-पेस्ट उन्माद का परिणाम होना चाहिए। :-(यानी डीओएच! –

+0

संभावित डुप्लिकेट [मुझे इनलाइन बनाम बाहरी जावास्क्रिप्ट का उपयोग कब करना चाहिए?] (http://stackoverflow.com/questions/138884/when-should-i-use-inline-vs-external-javascript) – outis

उत्तर

9

सं। Unobtrusive Javascript लिखें।

+2

मैं अविभाज्य जावास्क्रिप्ट का भी एक बड़ा प्रशंसक हूं। –

+2

आपको शुरू करने में सहायता के लिए कुछ ढांचे हैं: jQuery, YUI, प्रोटोटाइप, म्यूटूल, डोजो। – Travis

+0

बिना किसी अच्छे ढांचे के अविभाज्य जावास्क्रिप्ट को लिखना असंभव नहीं है सूचीबद्ध है, लेकिन आप क्यों चाहते हैं? :) –

3

यदि आप जितनी जल्दी हो सके अपने जावास्क्रिप्ट को चलाने के लिए चाहते हैं, तो इनलाइन जावास्क्रिप्ट को शामिल करने के लिए समझ में आता है, क्योंकि यह किसी भी अन्य HTTP अनुरोधों को पूरा होने से पहले चलाएगा।

और कुछ मामलों में, आप किसी तृतीय पक्ष प्रदाता से जावास्क्रिप्ट शामिल कर रहे हैं और आपके पास वास्तव में कोई विकल्प नहीं है। कुछ विज्ञापन सिस्टम, साथ ही साथ Google Analytics, दिमाग में वसंत।

+2

मैं हमेशा Google Analytics कोड को एक अलग फ़ाइल में डालता हूं, मुझे कोई कारण नहीं दिखता है। – jeroen

2

स्क्रिप्ट गतिशील रूप से उत्पन्न तो किया जाना चाहिए (जैसे कि एक PHP या ASP.NET MVC पेज से) यह इनलाइन के लिए :-)

+0

बस PHP द्वारा संसाधित होने के लिए अपने सर्वर पर .phpjs जैसे एक्सटेंशन को सेट करें और टेक्स्ट/जावास्क्रिप्ट के रूप में कार्य किया है। या प्रदर्शन को चिंता न होने पर भी PHP को पूरी तरह से रोकने के लिए PHP प्राप्त करें। – Macha

+1

फिर भी, उचित हेडर के साथ एक अलग PHP फ़ाइल होने के लिए यह बेहतर है (और, उस मामले के लिए, PHP कोड के लिए php पढ़ने .js फ़ाइलों को बनाने के तरीके हैं)। बहुत कम समय होते हैं जब जावास्क्रिप्ट को वास्तव में पृष्ठ पर उपस्थित होना पड़ता है और यदि इनमें से चीजें दिमाग में लिखी जाती हैं तो इनमें से अधिकतर से बचा जा सकता है। – cwallenpoole

+0

यदि ऐसी स्थिति है जिसके लिए गतिशील रूप से जेनरेट की गई जावास्क्रिप्ट की आवश्यकता है, तो मैं इसके बजाय अजाक्स का उपयोग करने पर विचार करूंगा। –

0

अधिकांश XSS कमजोरियों केवल इनलाइन जावास्क्रिप्ट का उपयोग कर शोषण किया जा सकता है एक कारण हो सकता है।

0

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

+0

यदि यह कई पृष्ठों पर आवश्यक है, तो यह लाभ हर बार फिर से लोड करने से बाहर निकलता है। हालांकि अगर यह एक फाइल है, तो इसे कैश किया जा सकता है। कैशिंग के लाभ की तुलना में, इनलाइनिंग न्यूनतम है। – Macha

+0

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

2

इस बात पर निर्भर करता है कि आप कितने जेएस लिखने की योजना बना रहे हैं। यदि आप कई समर्थन दिनचर्या लिख ​​रहे हैं (प्रमाणीकरण जांच, टेक्स्ट प्रोसेसिंग, एनीमेशन और प्रभाव के बहुत सारे) तो यह समझ में आता है कि कोड को एक अलग फ़ाइल में रखना है। यह कोड को पुन: उपयोग करने और आपके HTML पृष्ठ से बहुत सारे जंक को हटाने की अनुमति देता है।

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

+0

यदि यह कई पृष्ठों पर आवश्यक है, तो यह लाभ हर बार फिर से लोड करने से बाहर निकलता है। हालांकि अगर यह एक फाइल है, तो इसे कैश किया जा सकता है। – Macha

0

मैं कभी-कभी उन पृष्ठों में जावास्क्रिप्ट इनलाइन डालता हूं जो आंशिक रूप से पुनः लोड हो जाते हैं (कुछ घटनाओं को उदाहरण के लिए नए जोड़े गए फॉर्म-फ़ील्ड में बाध्य करने के लिए) और/या कुछ अद्वितीय जावास्क्रिप्ट का उपयोग करने वाले पृष्ठ जिन्हें मैं किसी अन्य पृष्ठ पर उपयोग नहीं करूँगा।

0

कई बाहरी स्क्रिप्ट अंततः पृष्ठ को धीमा कर सकती हैं क्योंकि ब्राउज़र को प्रत्येक फ़ाइल को अलग से कॉल करना होगा। जावास्क्रिप्ट को एक फ़ाइल में या पेज में जोड़ना कभी-कभी इस समस्या को कम कर सकता है।

दूसरी तरफ, मेरा मानना ​​है कि ब्राउजर पहली बार कॉल होने के बाद एक स्क्रिप्ट फ़ाइल कैश कर सकता है, इसलिए यदि आपके पास अपनी साइट पर बहुत सारे कोड हैं, तो बाहरी तरीका है।

+0

मुझे सब कुछ एक पृष्ठ में लोड करने के बारे में आपका विचार पसंद है। ऐसा करने के लिए आप पहले से उल्लिखित कुछ विचारों को जोड़ सकते हैं। उदाहरण के लिए, कई अलग-अलग .js फ़ाइलों में सभी जावास्क्रिप्ट फ़ाइलों को बनाएं, और फिर PHP के include_once का उपयोग उन सभी को एक पृष्ठ में लोड करने के लिए करें।इस प्रकार, आपके पास एकाधिक .js फ़ाइलों को संपादित करने का लाभ है, लेकिन ब्राउज़र के पढ़ने के लिए आपके पास केवल एक पृष्ठ का लाभ भी है। – cwallenpoole

0

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

से बहुत स्पष्ट रूप से और आसानी से दृश्य (मेरे मामले में एचटीएमएल या एमएक्सएमएल) को अलग और आसानी से अलग कर सकते हैं इसका मतलब यह भी है कि आपको एक पंक्ति के लिए पांच फाइलों को देखने के बारे में चिंता करने की ज़रूरत नहीं है कोड का - आपका सभी कोड एक ही स्थान पर है।

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