检测或捕获hashbang/querystring更改到相同的href目标



我注意到一些网站,如果我创建多个共享相同目标的链接,该网站实际上不会重新加载请求,而是捕获链接并处理它,要么通过将其加载到其应用程序中的选项卡中,要么再次更改页面中的元素…所有这些都无需完全重新加载URL请求。

我如何在我的页面中检测到这个?

例如,我想处理来自外部链接的多个链接,如

<a href="http://192.168.1.10/index.php?p=1#/tag/ABC-0021" target="myapp">0021</a>           
<a href="http://192.168.1.10/index.php?p=1#/tag/ABC-0031" target="myapp">0031</a>
<a href="http://192.168.1.10/index.php?p=1#/tag/ABC-0012" target="myapp">0012</a>

现在,每次我点击其中一个链接,我的整个应用程序/页面只是刷新在浏览器标签的目标。谁知道有什么方法可以防止这种情况发生,这样我就可以适当地处理它?

编辑:谷歌音乐做到了这一点-尝试点击链接,一旦你打开一个标签,移动标签到屏幕的另一个显示器/区域。选择另一个链接,注意到谷歌音乐的内容发生了变化,但并没有完全刷新整个应用程序。https://jsfiddle.net/jonemzke/

编辑2:我想这和窗口有关。onbeforeunload或popstate更改,但是我找不到此场景的特定代码示例。

这里有window.onhashchange

    window.onhashchange = function() {
        document.getElementById("hash").innerText =  window.location.hash;
    };
<a href = "#no_refresh">No Refresh</a>
<a href = "#still_no_refresh">Still no Refresh</a>
<br />
Current hash<div id = "hash"></div>

https://developer.mozilla.org/en/docs/Web/API/WindowEventHandlers/onhashchange

谢谢大家-在我的情况下,这是因为我实际上是链接到一个本地不安全的HTTPS服务器,我没有有效的SSL。我只是使用它进行测试(并绕过安全警告),但是浏览器认为这是每次都需要重新加载的东西。如果您通过哈希传递到非HTTPS或真正的HTTPS站点,它不会像我想要的那样刷新!

最新更新