如何使用javaScript一次性重新加载页面

如何使用javaScript一次性重新加载页面,javascript,jquery,load,Javascript,Jquery,Load,我想在我的所有代码加载后重新加载我的页面,而不使用按钮 我使用了:location.reload() 问题是它总是重复地重新加载我的页面。您需要在页面JavaScript之外存储某种状态,以指示是否刷新。一种方法是使用或cookie,但这两种方法都不适用于每个选项卡或每个窗口。最好的办法是在某个地方标记它已重新加载一次。 如Matt所说,使用Cookie或localStorage,如果需要每个选项卡,可以更改location.hash 也许您可以帮助我们理解为什么要重新加载,可能还有另一种方法。

我想在我的所有代码加载后重新加载我的页面,而不使用按钮

我使用了:
location.reload()


问题是它总是重复地重新加载我的页面。

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

最好的办法是在某个地方标记它已重新加载一次。 如Matt所说,使用Cookie或localStorage,如果需要每个选项卡,可以更改location.hash

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

您的
窗口。每次重新加载页面时,重新加载()
都会受到影响。这样做:

if(window.location.href.indexOf('?reloaded') === -1) window.location.href = window.location.href + "?reloaded=true";
这假设页面没有使用任何其他url参数

编辑

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

if(window.name !== "refreshed") {
    window.name = "refreshed";
    window.location.refresh();
}
如果要对此进行测试,请将以下内容粘贴到HTML文件中并加载到浏览器中:

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

window.name=提示(“window name”,window.name);

输入新名称,然后刷新页面。您将看到在刷新时显示新名称。类似地,如果您随后使用同一文件打开第二个选项卡,则可以独立于其他选项卡设置该选项卡的名称。

为什么?闻起来像是一个。即使你在页面加载完成后再这样做,它仍然会在一个循环中重新加载。。您希望它在什么时候停止重新加载?这是其中一个问题,我们很想知道您想要完成什么,这样我们就可以提出一个解决方案。@Explosion Pills:就像一个循环,我想在完全加载页面后执行此函数一次。@Slimils:它为什么重新加载页面?你想做什么?如果能提供更详细的答案,我们将不胜感激。这并不理想。您正在附加URL。这会影响浏览器导航。我同意@Jackson_Sandland。令人高兴的是,在我多年的发展中,我很少看到一个问题不能以比做OP要求的事情更好的方式解决。如果你到了这里,也许还有更好的解决方法(而不是刷新)来解决你的问题。@Jackson_Sandland我做了一些挖掘,发现了另一个黑客。我已经更新了我的答案。