Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Chrome不显示在HTML页面中动态加载的外部JS文件的更新内容_Javascript_Html - Fatal编程技术网

Javascript Chrome不显示在HTML页面中动态加载的外部JS文件的更新内容

Javascript Chrome不显示在HTML页面中动态加载的外部JS文件的更新内容,javascript,html,Javascript,Html,我有以下简单的HTML和JS代码。当用户选择意大利语选项时,JS代码将动态加载外部JS文件Language\u it.JS <html> <head> <script> function ChangePageLanguage() { var e = document.getElementById("langDD"); var lang = e.options[e.selectedIndex].value; if (lang == "it") { v

我有以下简单的HTML和JS代码。当用户选择意大利语选项时,JS代码将动态加载外部JS文件
Language\u it.JS

<html>
<head>

<script>
function ChangePageLanguage()
{
var e = document.getElementById("langDD");
var lang = e.options[e.selectedIndex].value;

if (lang == "it")
{
    var scrptE = document.createElement("script");
    scrptE.setAttribute("type", "text/javascript");
    scrptE.setAttribute("language", "JavaScript");
    scrptE.setAttribute("src", "language_it.js");
    var head = document.getElementsByTagName("head")[0];
    head.appendChild(scrptE);
}
}
</script>
</head>

<body>
<select onchange="ChangePageLanguage()" id="langDD">
    <option value="en">English</option>
    <option value="it">Italian</option>
    </select>
</body>
</html>

它在Firefox中运行良好,但如果我更改
语言\u It.js的内容,则
Chrome
不会显示更新的内容,除非我在
Chrome
中重新启动index.html页面。这个问题有什么解决方案吗?

在Chrome上开发时,可以禁用缓存

  • 按F12打开开发人员工具
  • 在右下角,单击齿轮图标
  • 选中“禁用缓存”
  • 重新加载页面

如果在开发过程中只需要刷新.js文件,请按照Joseph的建议禁用缓存

如果每次调用JavaScript文件时都需要刷新该文件(例如,如果动态生成该文件),则可以向文件名添加唯一的查询字符串,这将导致浏览器每次检索该文件:

scrptE.setAttribute("src", "language_it.js?ticks=" + new Date().getTime());​

如果缓存阻止脚本正确更新,或者需要在生产中始终取消缓存脚本,则始终可以执行以下操作:

scrptE.setAttribute("src", "language_it.js?" + (Date.now() % 10000));

这将附加一个基于时间的数字字符串,该字符串几乎总是在URI的末尾为您提供一个唯一的数字,这将阻止浏览器从缓存中检索文件。

即使在禁用缓存后,它也只能工作一次。当我用第二个值测试它时,同样的问题@NidaSulheri首先尝试清除缓存(从“时间开始”按ctrl+shift+del),然后在开发人员工具中禁用缓存,然后加载页面。
scrptE.setAttribute("src", "language_it.js?" + (Date.now() % 10000));