我有一个HTML文件,其中加载了多个Javascript文件:
<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页面?
我有一个HTML文件,其中加载了多个Javascript文件:
<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页面?
你可以先移除,然后再重新添加它们:
$('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);
}
});
https://superuser.com/questions/36106/force-refreshing-only-javascript-files-in-firefox-and-chrome
基于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);
}
});
已在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');
不会移除事件监听器,因此例如按钮点击如果重新加载,则会执行两次。