在html5、ios中onunload或onbeforeunload不起作用

在网上寻找了一下原因,找到了ios官方文档,在官方文档中说unloadonbeforeunload已经废弃掉了,使用pagehide作为代替,这就说明如果是在ios平台,在HTML5中如果想在页面消失的时候做点事情,需要监听pagehide事件。

兼容

在使用addEventListener监听事件时,在老的IE浏览器中不支持,如果你想要兼容所有的情况就需要做个判断。

if (window.addEventListener) {
        window.addEventListener(eventName, function () {
         // do something
        })
      } else if (window.attachEvent) {
        // 主要是为了兼容老的IE
        window.attachEvent('on' + eventName, function () {
          // do something
        })
      } else {
        window.onbeforeunload = function () {
          // do something
        }
      }

onunload VS onbeforeunload

onunload当页面刷新或关闭时调用
onbeforeunload也是页面刷新或关闭的时候调用,区别是onunload已经从服务器上读到了需要加载的新页面在即将替换掉当前页面时调用,可以阻止页面的更新和关闭。

在各个浏览器中onbeforeunload 兼容性比 onunload 更好一些,

  • 推荐阅读:
    unload和beforeunload对比
    用PV时不要丢失用户和app状态

扩展:

ios支持事件官方文档

你可能感兴趣的:(在html5、ios中onunload或onbeforeunload不起作用)