如何在不重新加载页面的情况下更改目标 window 的 location.hash?

How can I change the location.hash of a target window, without reloading the page?

我目前正在使用一个页面生成一个新的 window,其中包含一个定时播放 URL。它加载的许多页面都响应散列导航。我这样做是这样的:

window.open(url,"playback");

当我们浏览 URL 时,我们应该会看到页面做出相应的响应。然而,我 运行 遇到的问题是 window.open() 调用实际上在散列更改时重新加载页面。

例如,加载“pageA.htm”,然后加载“pageB.htm#tab2”可以完美运行。然而,问题是当我尝试从“pageB.htm#tab2”转到“pageB.htm#tab3”时;页面完全重新加载(正确响应哈希)而不是像我期望的那样仅仅触发 "onhashchange"。

是否有 window.open() 的替代方法,我应该调用仅哈希更改,这将防止重新加载整页?

编辑:最终解决方案如下所示:

playbackWindow = window.open(url,"playback");

然后当我们要更改散列时:

playbackWindow.location.href = "poundIt";
window.location.hash = "This"; 

应该可以解决问题。

您不能使用 window.open 在不重新加载页面的情况下更改散列。只需更改 window.location.hash 的值即可。