我想在没有使用按钮的情况下加载所有代码后重新加载我的页面。
我用过:location.reload();
问题是它一直重复加载我的页面。
答案 0 :(得分:7)
每次重新加载页面时,window.reload()
都会被点击。做这样的事情:
if(window.location.href.indexOf('?reloaded') === -1) window.location.href = window.location.href + "?reloaded=true";
这假设页面没有使用任何其他url参数。
修改强>
Matt Ball指出,使用localStorage或cookies不会限制单个标签或窗口,但正如Jackson Sandland在评论中指出的那样,我上面给出的解决方案将改变浏览器历史记录。在做了一些挖掘后,我想出了另一个,当然是“hacky”但看似有效的解决方案:在URL中使用window.name
而不是标志:
if(window.name !== "refreshed") {
window.name = "refreshed";
window.location.refresh();
}
如果您想对此进行测试,请将以下内容粘贴到HTML文件中并将其加载到浏览器中:
<script>
window.name = prompt("Window name", window.name);
</script>
输入新名称,然后刷新页面。您将看到刷新时会显示新名称。同样,如果您随后打开具有相同文件的第二个选项卡,则可以单独设置该选项卡的名称。
答案 1 :(得分:3)
你最好的选择是在某个地方重新加载一次。 使用Matt所说的cookies或localStorage,如果你需要每个标签,你可以改变location.hash
也许你可以帮助我们理解为什么你想重新加载,可能还有另一种方式。
答案 2 :(得分:2)
您需要在页面的JavaScript之外存储某种状态,以指示是否刷新。一种方法是使用localStorage
或cookie,但这些方法都不适用于每个标签或每个窗口。