1

所以我运行了一个使用大量 javascript 和 ajax 的网站。我了解如何让用户在浏览器加载时刷新他们的浏览器。但是,如果我需要他们在加载网站后刷新浏览器会怎样?

我想更改提供给客户端的 ajax 以加快速度,但这会导致尚未刷新浏览器的用户出错。

我能想出的唯一解决方案是,当需要新版本的 JavaScript 文件时,该站点使用一个弹出窗口,要求用户强制刷新他们的浏览器。(这不会真正修复当前版本,但可以防止将来出现问题。)

我讨厌将弹出窗口用于我可以自动执行的操作。有没有更好的方法来强制客户端更新?

4

2 回答 2

1

您听起来好像您的 JavaScript 无法通过 Ajax 方法获取它加载的数据的更新版本,对吗?例如,如果两个 Ajax 调用尝试加载“data.txt”,那么第二个调用仅使用缓存版本。

您也可能无法加载脚本本身的新版本。

解决这两个问题的方法是将随机生成的查询字符串添加到您的脚本源和 Ajax 源中。

例如,制作一个加载主脚本的脚本,如下所示:

/* loader1.js */
document.write('<script src="mainjavascript.js?.rand=', Math.random(), '"></script>');

在您的 HTML 中,只需执行

<script src="loader1.js"></script>

同样的方法也适用于 JavaScript Ajax 请求。假设“client”是一个新的 XMLHttpRequest() 对象,并且已经正确设置了 readystatechange 函数等,那么您只需附加相同的查询字符串,如下所示:

request = client.open('GET', 'data.txt?.rand=' + Math.random(), true);
request.send();

您可能正在使用一个库来执行您的 Ajax 请求,因此它更容易。只需将数据 URL 指定为,'data.txt?.rand=' + Math.random()而不仅仅是“data.txt”

于 2013-04-15T19:01:24.133 回答
1
window.location.href = "http://example.com"

用 指向的页面替换当前页面http://example.com

于 2013-04-15T18:47:42.040 回答