簡體   English   中英

重新加載JavaScript文件而不刷新HTML

[英]Reload JavaScript files without refreshing HTML

我有一個加載幾個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時,是否可以重新加載這些Javascript文件而無需重新加載整個HTML頁面?

您可以刪除然后重新添加它們:

$('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);
    }
});

事實上,沒有(至少不是沒有黑客) - 非常小心地重裝。 您的javascripts很可能會被緩存,這會導致嘗試調試時出現很多麻煩,因為您的更新不適用。

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

使用jQuery 2.0.3和chrome 43進行測試

 function reloadScript(id) {

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

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

Chrome正在抱怨,但有效:

主線程上的同步XMLHttpRequest因其對最終用戶體驗的不利影響而被棄用。 如需更多幫助,請訪問http://xhr.spec.whatwg.org/

您的腳本標記必須具有ID。 在控制台中呼叫:

reloadScript('yourid');

不刪除事件偵聽器,因此例如,如果重新加載,則按鈕單擊將執行兩次。

基於PitaJ的解決方案。

重新加載函數中的所有javascript。 你可以從任何你想要的地方打電話。

 $('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);
        }
    });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM