23

我有一个加载几个 Javascript 文件的 HTML:

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

当我在浏览器的控制台中调试/测试我的 Javascript 时,是否可以重新加载这些 Javascript 文件而无需重新加载整个 HTML 页面?

4

4 回答 4

19

您可以删除然后重新添加它们:

$('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);
    }
});
于 2012-06-03T06:21:21.097 回答
2

不(至少不是没有破解),事实上 - 重新加载这么多要非常小心。您的 javascript 很可能会被缓存,这会导致尝试调试时头疼,因为您的更新未应用。

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

于 2012-06-03T06:12:20.697 回答
0

基于 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);
        }
    });
于 2016-04-27T08:57:45.440 回答
0

使用 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');

不删除事件侦听器,例如,如果重新加载按钮单击,则会执行两次。

于 2015-07-16T08:05:12.660 回答