我有以下简单的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.js则Chrome不会显示更新的内容,除非我重新启动index.html页面Chrome.这个问题有什么解决方案吗?
如果您的缓存阻止您的脚本正确更新,或者您需要在生产中始终未缓存它,您可以始终执行以下操作:
scrptE.setAttribute("src", "language_it.js?" + (Date.now() % 10000));
Run Code Online (Sandbox Code Playgroud)
这将附加一个基于时间的数字字符串,几乎总是在URI的末尾给你一个唯一的数字,这应该阻止浏览器从缓存中检索文件.