通过URL保存和重新创建状态

时间:2018-09-30 16:28:50

标签: javascript url web state

想象一下以下情况:

用户转到https://mywebsite.com,搜索内容并点击[submit]。显示结果,URL现在为https://mywebsite.com/floobah?q=burp。用户单击一个锚点,该锚点将页面向下滚动到div,从而选择了一种可视化结果的方式。该URL现在为https://mywebsite.com/floobah?q=burp#viz。用户选择饼图小部件并显示饼图和相关数据。该URL现在为https://mywebsite.com/floobah?q=burp&chart=pie&sort=asc#viz

然后用户将URL发送给朋友。当其收件人打开该URL时,状态将与发件人完全相同。换句话说,将解析URL,并执行恢复状态的操作……执行查询,页面向下滚动到 viz 部分,打开饼图,并显示已排序的相关数据根据要求。

我现在正在通过解析URL并重播所有步骤来执行此操作。但是肯定必须已经有一个图书馆可以这样做,不是吗?总而言之,我希望URL中编码的页面状态可以被URL书签的接收者共享然后重新创建。

更新1:如上所述,我的网址存在一个问题https://mywebsite.com/floobah?q=burp&chart=pie&sort=asc#viz:无法区分诸如q=burb之类的真实查询参数与单击带有附加给let的事件侦听器的元素的结果,例如chart=pie&soft=asc。我需要能够区分用于处理事件的命令以及查询字符串和哈希(#viz

更新2:因此,我有三组参数:在服务器上处理的queryString,在客户端处理的事件以及在哈希表中指定锚点的哈希片段。浏览器滚动到的页面。如果我用!标记事件怎么办?想象https://mywebsite.com/floobah?q=burp!makePieChart!sortAscending#viz。服务器将处理queryString q=burp并返回给客户端,客户端向下滚动到#viz,并向makePieChartsortAscending触发事件。有想法吗?

0 个答案:

没有答案