强制(或要求很好)刷新浏览器

时间:2013-04-15 18:41:15

标签: javascript ajax

所以我运行了一个使用大量javascript和ajax的网站。我了解如何让用户刷新浏览器when the browser loads。但是如果我在加载网站后需要刷新浏览器会发生什么呢?

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

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

我讨厌使用弹出窗口来自动执行某些操作。是否有更好的方法来强制更新客户端?

2 个答案:

答案 0 :(得分:1)

window.location.href = "http://example.com"

将当前页面替换为http://example.com指向的页面。

答案 1 :(得分: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请求,因此它更容易。只需将数据网址指定为'data.txt?.rand=' + Math.random(),而不仅仅是“data.txt”