gpt4 book ai didi

javascript - Gmail 如何在丰富的 JavaScript 中处理后退/转发?

转载 作者:数据小太阳 更新时间:2023-10-29 04:14:12 29 4
gpt4 key购买 nike

Gmail 似乎有一些聪明的方法来处理富 JS 应用程序中的后退/前进按钮。

在我的组织中,我们试用了 jQuery 历史记录插件。该插件基本上每 100 毫秒运行一个函数,该函数解析 URL 并测试它是否已更改。历史记录由 HTTP anchor 跟踪,如果 anchor 已更改,则插件会调用用户指定的回调,传入新 anchor ,以便页面可以执行自定义行为以加载新内容。

我的组织确定 jQuery 历史插件不是生产质量。老实说,我不怪他们,因为你真的不想强制用户的浏览器每 100 毫秒运行一个函数。此外,它使 JS 代码几乎无法调试,因为在 Firebug 或类似的 JS 调试器中单击“Break On Next”,将始终捕获 jQuery 历史事件,而不会查看其他事件。

所以我们在这一点上放弃了在浏览器中实现后退/前进功能。但是,我最近注意到 Gmail 很好地实现了这一点。它还使用 HTTP anchor 值,但我按下了“Break On Next”,Gmail 不会每 100 毫秒运行任何一种功能。 Gmail 如何实现这种后退/转发行为?

最佳答案

也许您在这里谈论的是 jQuery History 插件: http://www.balupton.com/projects/jquery-history已在众多生产质量现场使用;我的最爱之一是 http://wbhomes.com.au/

如果是这样,它将对 older generation browsers 使用 200 毫秒测试它没有在本地实现 onhashchange 事件。如果没有 native 实现该事件,您必须通过使用间隔更改来解决它的功能——据我所知,没有任何其他方法。幸运的是,所有主流浏览器的最新版本现在都原生支持 onhashchange 事件,因此不再需要此检查。

但是,唉,让我们来看看 200 毫秒间隔检查的作用。如果它们在 IE6 或 7 上,它将检查 iframe 的状态(因为在这些浏览器中需要 iframe 来模拟后退和前进按钮 - 而对于其他浏览器则不需要 iframe)。如果他们使用的是另一个不是 IE 的旧浏览器,那么它可以在检查中使用 location.getHash()(没有 iframe,如前所述)。两种类型的检查都设计得非常快并且尽可能少,从而使必要的开销几乎为零。这完全取决于浏览器实际上愿意让您做什么,并尝试使用尽可能最少的代码来完成。

注意:在 jQuery History v1.4.2-final(2010 年 8 月 12 日)发布之前,唯一可识别的原生支持 onhashchange 的浏览器是 IE8 及更高版本。这已在 jQuery History 项目的所有较新版本中得到解决。

关于javascript - Gmail 如何在丰富的 JavaScript 中处理后退/转发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3460041/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com