我遵循简单的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>
language_it.js
有以下代码行:
alert ("Italian");
它在Firefox中工作正常,但如果我更改language_it.js
的内容,则Chrome
除非重新启动Chrome
中的index.html页面,否则不会显示更新的内容。这个问题有什么解决方案吗?
答案 0 :(得分:7)
在Chrome上进行开发时,您可以停用缓存
答案 1 :(得分:5)
如果您的缓存阻止您的脚本正确更新,或者您需要在生产中始终将其解除,则可以始终执行以下操作:
scrptE.setAttribute("src", "language_it.js?" + (Date.now() % 10000));
这会附加一个基于时间的数字字符串,几乎总是会在URI的末尾给你一个唯一的数字,这应该会阻止浏览器从缓存中检索文件。
答案 2 :(得分:2)
如果您只需要在开发期间刷新.js文件,请像Joseph建议的那样禁用缓存。
如果你需要每次调用JavaScript文件(例如,如果你动态生成它),你可以在文件名中添加一个唯一的查询字符串,这将导致浏览器每次都检索它: / p>
scrptE.setAttribute("src", "language_it.js?ticks=" + new Date().getTime());