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

Aze*_*eem 5 html javascript

我有以下简单的HTML和JS代码.当用户选择意大利语语言选项时,JS代码会动态加载外部JS文件language_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>
Run Code Online (Sandbox Code Playgroud)

language_it.js有以下的代码行:

alert ("Italian");
Run Code Online (Sandbox Code Playgroud)

它在Firefox中工作正常,但如果我更改内容,language_it.jsChrome不会显示更新的内容,除非我重新启动index.html页面Chrome.这个问题有什么解决方案吗?

Jos*_*eph 7

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

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


Nim*_*ous 5

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

scrptE.setAttribute("src", "language_it.js?" + (Date.now() % 10000));
Run Code Online (Sandbox Code Playgroud)

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