pageshow和pagehide事件

Posted jokes

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pageshow和pagehide事件相关的知识,希望对你有一定的参考价值。

 Firefox和opera有一个特性,往返缓存:可以在用户使用浏览器的后退和前进按钮时加快页面的转换速度,这个缓存不仅保存了页面的数据,还有DOM和javascript的状态。

为了更形象的说明bfcache的行为,Firefox提供了新事件:

虽然这些事件的目标是document,但是必须把事件处理程序添加到window上。 

实例:

(function(EventUtil){
            var showCount = 0;
            EventUtil.addHandler(window, ‘load‘, function(){
                alert(‘Load fired‘);
            });
            EventUtil.addHandler(window, ‘pageshow‘, function(event){
                event = EventUtil.getEvent(event);
                showCount++;
                alert(‘Show has been fired ‘+showCount + ‘ times. ‘+event.persisted);
            });
        })(EventUtil)

pageshow定义和用法

onpageshow 事件在用户浏览网页时触发。

onpageshow 事件类似于 onload 事件,onload 事件在页面第一次加载时触发, onpageshow 事件在每次加载页面时触发,即 onload 事件在页面从浏览器缓存中读取时不触发。

为了查看页面是直接从服务器上载入还是从缓存中读取,你可以使用 PageTransitionEvent 对象的 persisted 属性来判断。 如果页面从浏览器的缓存中读取该属性返回 ture,否则返回 false

 

pagehide定义和用法

onpagehide 事件在用户离开网页时触发。

离开网页有多种方式。如点击一个链接,刷新页面,提交表单,关闭浏览器等。.

onpagehide 事件有时可以替代 onunload 事件,但 onunload 事件触发后无法缓存页面。

为了查看页面是直接从服务器上载入还是从缓存中读取,你可以使用 PageTransitionEvent 对象的 persisted 属性来判断。 如果页面从浏览器的缓存中读取该属性返回 ture,否则返回 false 。

不支持冒泡

 

 

指定了onunload事件的处理程序的页面会被自动排除在bfcache之外,即使事件处理程序是空的,原因在于:onunload最常用撤销onload中所执行的操作,而跳过onload后再次显示页面很可能就会导致页面不正常

 

以上是关于pageshow和pagehide事件的主要内容,如果未能解决你的问题,请参考以下文章

专注于 jQuery Mobile pageshow 事件不呈现

Jquery Mobile:“pageshow”事件仅在 Shift F5(完全重新加载)时触发,但在加载另一个页面或具有不同查询的同一页面时不会触发

移动端点击返回时强制页面刷新解决办法(pageshow)

jQuery Mobile 不会在主页中触发事件

解决ios微信页面回退不刷新的问题

IOS微信禁用分享跳转页面返回BUG修复