2011-03-12 15 views
7

एक .js फ़ाइल पर विकास करते समय मैं समय बचाने के लिए पूरे पृष्ठ की बजाय उस फ़ाइल को रीफ्रेश करना चाहता हूं। किसी को इसके लिए किसी भी तकनीक के बारे में पता है?क्या विकास करते समय जावास्क्रिप्ट को रीफ्रेश करने का कोई तरीका है?

उत्तर

8

यहाँ एक नया स्क्रिप्ट तत्व बनाने के लिए एक समारोह है। यह डाउनलोड को मजबूर करने के लिए स्क्रिप्ट के यूआरएल को अद्वितीय बनाने के लिए एक बढ़ी हुई पूर्णांक को जोड़ता है (जैसा कि कंस सुझाया गया है)।

 
var index = 0; 
function refreshScript (src) { 
    var scriptElement = document.createElement('script'); 
    scriptElement.type = 'text/javascript'; 
    scriptElement.src = src + '?' + index++; 
    document.getElementsByTagName('head')[0].appendChild(scriptElement); 
} 

फिर Firebug कंसोल में, आप इसे के रूप में कॉल कर सकते हैं:

 
refreshScript('my_script.js'); 

आप यह सुनिश्चित करें कि सूचकांक में ही स्क्रिप्ट पुनः लोड किया जा रहा का हिस्सा नहीं है बनाने की आवश्यकता होगी!

फ़ायरबग नेट पैनल आपको यह देखने में मदद करेगा कि स्क्रिप्ट डाउनलोड की जा रही है या नहीं। प्रतिक्रिया स्थिति "200 ठीक" होनी चाहिए और नहीं, "304 संशोधित नहीं होना चाहिए। इसके अलावा, आपको क्वेरी स्ट्रिंग में संलग्न इंडेक्स देखना चाहिए।

फ़ायरबग HTML पैनल आपको यह देखने में मदद करेगा कि स्क्रिप्ट तत्व को सिर में जोड़ा गया था या नहीं तत्व

अद्यतन:।

यहाँ एक संस्करण एक सूचकांक चर के बजाय एक टाइमस्टैम्प का उपयोग करता है है @davyM चलता है, यह एक और अधिक लचीला दृष्टिकोण है:।

 
function refreshScript (src) { 
    var scriptElement = document.createElement('script'); 
    scriptElement.type = 'text/javascript'; 
    scriptElement.src = src + '?' + (new Date).getTime(); 
    document.getElementsByTagName('head')[0].appendChild(scriptElement); 
} 

अलेक्सई के अंक भी अच्छी तरह से कर रहे हैं -स्टेटेड

+0

मैं एक सूचकांक के बजाय समय (नई तिथि()। GetTime()) का उपयोग करूंगा (वैश्विक चर की आवश्यकता को हटा देता है)। यदि आप एक ही स्क्रिप्ट को रीफ्रेश करते हैं, तो आप एक बुकमार्कलेट भी बना सकते हैं। –

+0

@ डेवीएम, अच्छा विचार। मैं अपडेट करूंगा। – inkfist

+0

+1। कृपया सावधान रहें कि पुनः लोड करने वाली स्क्रिप्ट पहले से लोड की गई evry ऑब्जेक्ट को अपडेट नहीं करेगी। आप उन दिलचस्प मुद्दों में भाग ले सकते हैं जहां कार्यों के पुराने संस्करणों का उपयोग किया जाता है (यानी कॉलबैक/क्लोजर/एक्सिसिटिंग ऑब्जेक्ट्स के रूप में)। –

0

यदि आप अपनी .js फ़ाइल के क्लाइंट-साइड/ब्राउज़र कैशिंग के दुर्भाग्यपूर्ण मामले के बारे में बात कर रहे हैं, तो आप बस अपनी .js फ़ाइल का संस्करण बना सकते हैं। आप कर सकते हैं?

  • .js ही (प्राथमिकता नहीं दी)
  • अद्यतन yourfile.js संदर्भित करने के लिए लाइन में शामिल हैं 1, आदि 2 yourfile.js, .. इस प्रकार अनुरोध करने के लिए मजबूर कर रहा ब्राउज़र फ़ाइल का नाम बदलें सर्वर से नवीनतम संस्करण। (पसंदीदा)
+0

नहीं की तरह एक्सटेंशन की वसूली का उपयोग तंग आ गया है, यह एक कैश मुद्दा नहीं है। मैं पूरे पेज को रीफ्रेश किए बिना .js * रीफ्रेश करना चाहता हूं। इस तरह की तरह कि आप फायरबग के माध्यम से सीएसएस को तुरंत अपने परिणामों का परीक्षण करने के लिए पृष्ठ को रीफ्रेश किए बिना सीएसएस कैसे संपादित कर सकते हैं। बिल्कुल इसी तरह नहीं, क्योंकि मैं .js फ़ाइल में परिवर्तनों को सहेजना चाहता हूं - लेकिन मुद्दा यह है कि मैं पूरे पृष्ठ को रीफ्रेश नहीं करना चाहता हूं। – Susan

+0

मानक डीबगिंग प्रथाओं के बाहर (उदाहरण के लिए अभिव्यक्तियों का मूल्यांकन, मूल्यों की जांच आदि।) मुझे नहीं पता कि आप क्या कर सकते हैं जो आप करने की कोशिश कर रहे हैं। दुर्भाग्यवश, पूर्ण पृष्ठ को पुनः लोड करना आपकी सबसे अच्छी शर्त है। – Kon

0

दुर्भाग्यवश, आपको अपने जावास्क्रिप्ट में संपादन देखने के लिए वेब पेज रीफ्रेश करना होगा। जावास्क्रिप्ट को "रीयल-टाइम" में संपादित करने का कोई तरीका नहीं है और रीफ्रेश किए बिना उन संपादन प्रभावों को देखें।

आप नया जावास्क्रिप्ट डालने के लिए फ़ायरबग का उपयोग कर सकते हैं, और डीओएम ऑब्जेक्ट्स में वास्तविक समय परिवर्तन कर सकते हैं; लेकिन आप जावास्क्रिप्ट को संपादित नहीं कर सकते जो पहले ही चलाया जा चुका है।

+0

मुझे पता है कि आप फायरबग के माध्यम से सीएसएस और एचटीएमएल संपादित कर सकते हैं, लेकिन मुझे नहीं लगता कि .js फ़ाइलें कैसे संपादन योग्य हैं? – Susan

+0

"कंसोल" पर क्लिक करें और अपने जेएस कोड को दाएं तरफ पैनल पर पेस्ट करें। –

+0

@ सुसान क्षमा करें, यह एक खराब शब्द पसंद था; मेरा मतलब यह था कि आप अपने जेएस लिखने के लिए कंसोल टैब का उपयोग कर सकते थे और यह दिखाता है कि आप रीयलटाइम में बदलाव करते हैं। मैंने अपना उत्तर अधिक विशिष्ट होने के लिए संपादित किया। – Moses

1

मैं आपको इस उद्देश्य के लिए फ़ायरबग का उपयोग करने का सुझाव देता हूं। इस वीडियो को देखें, इससे मुझे बहुत मदद मिली।

http://encosia.com/2009/09/21/updated-see-how-i-used-firebug-to-learn-jquery/

+0

आदर्श नहीं है अगर मैं .js फ़ाइल में एकाधिक फ़ंक्शंस में tweaks के साथ काम कर रहा हूं। – Susan

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

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