2016-11-08 43 views
1

我注意到一对夫妇的网站,如果我创建多个链接共享相同的目标,网站实际上并没有重新加载请求,而是捕获链接并处理它可以通过将其加载到其应用程序中的选项卡中,或者在页面内再次更改元素,而无需完全重新加载URL请求。检测或捕获hashbang/querystring更改为相同的href目标

如何在我的页面中检测到此内容?

例如,我要处理多个环节,从外部链接,而在这样的

<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> 

现在,每次我点击这些链接之一,我的整个应用程序/页面只是刷新浏览器选项卡为那个目标。任何人都知道一种方法来防止这种情况发生,所以我可以适当地处理它?

编辑:谷歌音乐做到这一点 - 尝试点击链接,一旦你打开一个标签,将该标签移动到另一个显示器/屏幕区域。选择另一个链接,注意Google音乐更改的内容,但不会完全刷新整个应用程序。编辑2:我想它与window.onbeforeunload或popstate变化有关,但是我找不到这个场景的代码的一个具体例子。

+0

只更改哈希标签不会重新加载页面,哈希标签通常作为页内定位。您必须添加另一个网址查询参数(有效更改网址)才能完成整个网站的刷新。 –

+0

@BrainFooLong这就是我想阻止 - 完全刷新。我想阻止刷新,并捕获某人已经在我的应用程序中建立会话以更改某些div标记内容。 – kerv

+0

比你对这个解决方案很好。检查散列是否已经改变,只有当你检查window.location.hash时,如果它发生了变化,那么它是否会发生变化。 –

回答

0

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