当您使用jQuery Mobile点击网站上的浏览器后退按钮时,不会立即离开页面,而是激活上一页。这是如何实现的?我认为他们无法拦截浏览器的后退按钮(我可以看到为什么浏览器制造商不想允许这样做)。谢谢
答案 0 :(得分:0)
使用哈希URL方案时(未启用pushState
插件):
独立于点击发生的哈希更改,例如用户时 单击后退按钮,通过 hashchange事件处理, 使用Ben Alman的hashchange绑定到window对象 特殊事件插件(包含在jQuery Mobile中)。当哈希改变时 发生(以及第一页加载时)hashchange事件 handler会将location.hash发送到$ .mobile.changePage() 函数,它反过来加载或显示引用的页面。
来源:http://jquerymobile.com/demos/1.1.0-rc.1/docs/pages/page-navmodel.html
启用pushState
插件时,同样可以,但hash
会转换为正常/可读的网址:
有一项可选功能可转换较长的基于散列的网址 在上一节中提到了完整的文档路径 更清洁,并使URL结构中的Ajax跟踪透明。 这是基于散列的URL系统之上的增强功能 用于Ajax链接。请注意,尽管名称,这个功能在技术上 使用history.replaceState(不是。)转换基于哈希的URL 当前版本中的history.pushState)因为这个工作原理更多 可靠地跨目标平台。对于不支持的浏览器 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