Gmail似乎有一种聪明的方式来处理JS应用程序中的后退/前进按钮。
在我们的组织中,我们试用了jQuery历史插件。该插件基本上每100毫秒运行一个函数,解析URL并测试其是否已更改。历史记录由HTTP锚点跟踪,如果锚点已更改,则插件调用用户指定的回调,并传递新锚点,以便页面可以执行自定义行为来加载新内容。
我们的组织确定jQuery历史插件不是生产质量。说实话,我不怪他们,因为你真的不想强制用户的浏览器每100毫秒运行一个函数。此外,它使JS代码几乎不可能调试,因为在Firebug或类似的JS调试器中点击“下一个断点”将始终捕获jQuery历史事件,而其他事件则无法查看。
因此,我们放弃了在浏览器中实现后退/前进功能的想法。然而,我最近注意到Gmail实现得相当好。它还使用HTTP锚点值,但我按下“下一个断点”,Gmail并没有每100毫秒运行任何类型的函数。 Gmail如何成功实现这种后退/前进行为呢?