2012-06-03 16 views
19

ताज़ा बिना पुनः लोड JavaScript फ़ाइलों को मैंने एक HTML जो कई जावास्क्रिप्ट फ़ाइलें लोड करता है:एचटीएमएल

<script src="assets/js/a.js"></script> 
<script src="assets/js/b.js"></script> 
<script src="assets/js/jquery.min.js"></script> 

मैं डिबग/मेरे ब्राउज़र की कंसोल में मेरी Javascripts का परीक्षण करते समय, यह संभव है की आवश्यकता के बिना इन जावास्क्रिप्ट फाइलों को फिर से लोड करने के लिए पूरे एचटीएमएल पेज को पुनः लोड करने के लिए?

+1

यदि आप डिबगिंग कर रहे हैं, तो आप डीबग करना चाहते हैं कि उपयोगकर्ता क्या अनुभव करता है। यदि आप बस एक स्क्रिप्ट पुनः लोड करते हैं, तो आप एक अलग संदर्भ से शुरू कर रहे हैं तो उपयोगकर्ता होगा। इसलिए डीबगिंग के दौरान पूरे एचटीएमएल को फिर से लोड करना इतना बुरा काम नहीं है। –

+0

अच्छा सवाल। लेकिन यह पहले ही पूछा जा चुका है और उत्तर दिया गया है। [क्या विकास करने के दौरान जावास्क्रिप्ट को रीफ्रेश करने का कोई तरीका है?] (Http://stackoverflow.com/questions/5285006/is-there-a-way-to-refresh-just-the-javascript- शामिल करें -doing-development) – naveen

+0

सभी उत्तरों और टिप्पणियों के लिए धन्यवाद। – tommi

उत्तर

2

वास्तव में (कम से कम एक हैक के बिना नहीं), वास्तव में - बहुत सावधानीपूर्वक पुनः लोड करना बहुत सावधान रहें। यह काफी संभव है कि आपकी जावास्क्रिप्ट कैश हो जाएं, जिससे डीबग करने की कोशिश करने वाले कई सिरदर्द होते हैं, क्योंकि आपके अपडेट लागू नहीं हो रहे हैं।

https://superuser.com/questions/36106/force-refreshing-only-javascript-files-in-firefox-and-chrome

+3

आप हमेशा Ctrl + F5 के साथ पुनः लोड कर सकते हैं, जो कैश –

18

आप को दूर कर सकता है और फिर उन्हें फिर से जोड़:

$('script').each(function() { 
    if ($(this).attr('src') !== 'assets/js/jquery.min.js') { 
     var old_src = $(this).attr('src'); 
     $(this).attr('src', ''); 
     setTimeout(function(){ $(this).attr('src', old_src + '?'+new Date()); }, 250); 
    } 
}); 
+8

@Truth को रीफ्रेश करेगा - उसके पास प्रश्न कोड में एक jquery स्क्रिप्ट तत्व है! – PitaJ

+1

+1 को अस्वीकार करने के लिए +1। @Truth: 3 का मतलब सभी नहीं है :) कम से कम StackOverflow पर :) लेकिन PitaJ आपका कोड छोटी है। 1. setTimeout इस कोड में कुछ भी नहीं करता है। 2. सबसे महत्वपूर्ण बात यह है कि स्क्रिप्ट को प्रतिस्थापित करना यहां काम नहीं करेगा। आप केवल एक नई स्क्रिप्ट जोड़ सकते हैं [jquery निष्पादित नहीं किए जा रहे स्क्रिप्ट स्रोत को प्रतिस्थापित कर सकते हैं] (http://stackoverflow.com/q/2226519/17447) – naveen

+0

@naveen - कोड – PitaJ

0

jQuery 2.0.3 के साथ परीक्षण किया गया और क्रोम 43

function reloadScript(id) { 

    var $el = $('#' + id); 

    $('#' + id).replaceWith('<script id="' + id + '" src="' + $el.prop('src') + '"><\/script>'); 
} 

क्रोम शिकायत कर रहा है, लेकिन काम करता है:

मुख्य धागे पर सिंक्रोनस XMLHttpRequest को हटा दिया गया है beca अंतिम उपयोगकर्ता के अनुभव के लिए इसके हानिकारक प्रभाव का उपयोग करें। अधिक सहायता के लिए, http://xhr.spec.whatwg.org/ देखें।

आपकी स्क्रिप्ट टैग में आईडी होना चाहिए। कंसोल में कॉल: तो उदाहरण के लिए बटन क्लिक करने के लिए दो बार मार डाला जाता है, तो एक बार पुनः लोड

reloadScript('yourid'); 

, घटना श्रोताओं को दूर नहीं करता है।

0

पिटाजे के समाधान के आधार पर।

फ़ंक्शन में सभी जावास्क्रिप्ट को दोबारा लोड करें। आप इसे कहीं से भी कह सकते हैं।

$('script').each(function() { 
     if ($(this).attr('src') != undefined && $(this).attr('src').lastIndexOf('jquery') == -1) { 
      var old_src = $(this).attr('src'); 
      var that = $(this); 
      $(this).attr('src', ''); 

      setTimeout(function() { 
       that.attr('src', old_src + '?' + new Date().getTime()); 
      }, 250); 
     } 
    });