5

我有以下简单的 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 中运行良好,但如果我更改 then 的内容,language_it.jsChrome不会显示更新的内容,除非我重新启动 index.html 页面Chrome。这个问题有什么解决办法吗?

4

3 回答 3

7

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

  • 按 F12 打开开发者工具。
  • 在右下角,单击齿轮图标。
  • 选中“禁用缓存”。
  • 重新加载页面。
于 2012-05-24T11:23:16.207 回答
5

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

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

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

于 2012-05-24T11:32:04.283 回答
2

如果您只需要在开发期间刷新 .js 文件,请按照 Joseph 的建议禁用缓存。

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

scrptE.setAttribute("src", "language_it.js?ticks=" + new Date().getTime());​
于 2012-05-24T11:29:12.190 回答