0

我想在不使用按钮的情况下加载所有代码后重新加载页面。

我用了:location.reload();

问题是它一直在反复重新加载我的页面。

4

3 回答 3

7

window.reload()每次重新加载页面时,您都会受到打击。做这样的事情:

if(window.location.href.indexOf('?reloaded') === -1) window.location.href = window.location.href + "?reloaded=true";

这假定页面没有使用任何其他 url 参数。

编辑

正如 Matt Ball 指出的那样,使用 localStorage 或 cookie 不会仅限于单个选项卡或窗口,但正如 Jackson Sandland 在评论中指出的那样,我上面给出的解决方案将改变浏览器历史记录。在做了一些挖掘之后,我想出了另一个公认的“hacky”但看似有效的解决方案:window.name在 URL 中使用而不是标志:

if(window.name !== "refreshed") {
    window.name = "refreshed";
    window.location.refresh();
}

如果您想对此进行测试,请将以下内容粘贴到 HTML 文件中并将其加载到浏览器中:

<script>
window.name = prompt("Window name", window.name);
</script>

输入新名称,然后刷新页面。您会看到刷新时会显示新名称。同样,如果您随后打开具有相同文件的第二个选项卡,则可以独立于另一个选项卡设置该选项卡的名称。

于 2012-12-17T20:44:08.270 回答
3

您最好的选择是在某处标记它已重新加载一次。使用马特所说的 cookie 或 localStorage,如果您需要每个选项卡,您可以更改 location.hash

也许您可以帮助我们了解您为什么要重新加载,可能还有另一种方式。

于 2012-12-17T20:43:09.643 回答
2

您需要在页面的 JavaScript 之外存储某种状态,以指示是否刷新。一种方法是使用localStorage, 或 cookie,但这些都不适用于每个选项卡或每个窗口。

于 2012-12-17T20:40:45.050 回答