1

当您在使用 jQuery Mobile 的站点上单击浏览器后退按钮时,不是立即离开页面,而是上一个页面被动画化。这是如何实现的?我认为他们无法拦截浏览器的后退按钮(我可以理解为什么浏览器制造商不想允许这样做)。谢谢

4

1 回答 1

0

使用哈希 URL 方案时(未pushState启用插件):

独立于单击发生的哈希更改,例如当用户单击后退按钮时,通过hashchange 事件处理,该事件使用 Ben Alman 的 hashchange 特殊事件插件(包含在 jQuery Mobile 中)绑定到窗口对象。当哈希更改发生时(以及第一页加载时),hashchange 事件处理程序会将 location.hash 发送到 $.mobile.changePage() 函数,该函数依次加载或显示引用的页面。

来源:http: //jquerymobile.com/demos/1.1.0-rc.1/docs/pages/page-navmodel.html

启用插件后,pushState情况相同,但hash会转换为正常/可读的 URL:

有一个可选功能可以将上一节中提到的较长的、基于散列的 URL 转换为更清晰的完整文档路径,并使 Ajax 跟踪在 URL 结构中透明。这是作为 Ajax 链接的基于哈希的 URL 系统之上的增强而构建的。请注意,尽管名称如此,但此功能在当前版本中通过使用 history.replaceState(而不是 history.pushState)在技术上转换基于哈希的 url,因为这在我们的目标平台上更可靠地工作。对于不支持 history.replaceState 的浏览器,或者如果禁用此功能,将使用基于哈希的 URL。

来源:http: //jquerymobile.com/demos/1.1.0-rc.1/docs/pages/page-navmodel.html

此外,这里是该hashchange活动的 MDN 文档:https ://developer.mozilla.org/en/DOM/window.onhashchange

于 2012-04-04T17:19:20.020 回答