Twitter如何让用户打开一个新窗口进行回复?

3
当你想查看某条推文的回复时,你点击推文以打开一个新窗口。这个新窗口看起来像是一个弹出层,但实际上你被重定向到了一个新的url来查看回复。当你在新窗口外部点击时,它会像一个普通的弹出层一样返回到你之前所在的页面。我想把这个技术应用到我的Web聊天应用程序中。
为了实现这一点,我认为我需要使用类似下面的window.open的东西。
window.open('new-url-for-replies', '_self');

然而,这只是在同一页上显示重定向的网站,不会在搜索栏中显示新的url,并且看起来不像模态框。

如果您知道Twitter用于此目的的技巧,能否在此分享您的智慧呢?

注意:我想知道如何使用Javascript实现此功能。


你并没有被“重定向”,Twitter使用客户端路由和历史API(如果没有它,你只能更改URL中#后面的部分),这使得URL更改时不需要任何重定向或重新加载。我不知道有哪些库,但你可以通过搜索“客户端路由器”来找到一个。 - yuriy636
我现在会去查看。谢谢您的快速回复。 - tet
1个回答

1
你没有被重定向。一个页面可以使用 history.pushState() 来操纵地址栏中的内容。 历史记录 API 相当简单。
假设你在页面 example.com/test 上,运行这段 JavaScript 代码。
var stateObj = { x: "y" };
history.pushState(stateObj, "New Page", "/a/different/page"); 

浏览器地址栏将显示example.com/a/different/page 在Twitter的情况下,当模态框关闭时,他们可以推送一个不同的状态。

感谢您指导我如何使用pushState。我找到了一篇由Twitter撰写的详细文章,解释了他们如何使用pushState来更新地址栏而不加载页面。因此,如果有人感兴趣,请查看Implementing pushState for twitter.com - tet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接