zoukankan      html  css  js  c++  java
  • onbeforeunvload不起作用 不触发 场景

    mdn

    https://developer.mozilla.org/zh-CN/docs/Web/API/Window/onbeforeunload

    从2011年5月25日起,  HTML5 规范 声明:在该事件的处理函数中调用下列弹窗相关的方法时,可以忽略不执行,window.showModalDialog()window.alert()window.confirm() window.prompt().

    需要指出的是,许多浏览器会忽略该事件并自动关闭页面无需用户的确认。火狐浏览器在配置页面about:config设有一个dom.disable_beforeunload的开关变量用于开启这个功能。

    你可以通过window.addEventListener() 或者 beforeunload 创建该事件。更多信息请点击以上链接。

    创建这个事件能防止浏览器缓存部分由javascript产生的页面内容。在页面中含Javascript产生的内容情形下,再次导航返回到原页面javascript不在运行。如果事先有window.onbeforeunload事件,导航返回到先前的页面后javascript将被触发并更新页面内容。

    注意:alert写在里面是不起效的!!

     

    有网友说,如果不进行交互也会触发,但是不会弹出提示。

    有网友说,在进入页面时给用户一个弹出框,用户如果浏览则需要手动点击关闭,这样进行了交互,就可以触发方法了

    有网友说,

    今天学习卸载事件(onunload)时候,有时候关闭窗口有作用,有时候不起作用,在各个浏览器中的效果也不一样,为什么会这样呢?

    上网查了查相关的解释,大佬说:“onbeforeunload和onunload在谷歌和火狐中,必须先按F12打开开发者模式,刷新或关闭网页,才会用提示框 。而且不能连续刷新,如刷新第一次有提示框接着刷新第二次,就变成直接刷新没有提示框。但是如果2次刷新时间间隔在30秒左右,则第二次刷新会有提示框。如果不按F12打开开发者模式,谷歌和火狐在onbeforeunload事件触发时都不会有提示框,会直接刷新或关闭页面”。

    有网友说,

    之前遇到的情况是,在chrome中onbeforeunload事件时而执行时而失效,以为是浏览器的兼容问题,百思不得其解,但后来发现如下解释:

    As of Chrome 60, the confirmation will be skipped if the user has not performed a gesture in the frame or page since it was loaded.

    在Chrome和Firefox中,页面加载完成后,如果用户未对页面进行操作,比如“点击”、“输入”等等,onbeforeunload将不会被执行。而在Safari中onbeforeunload总是会被执行。

    需要指出的是,许多浏览器会忽略该事件并自动关闭页面无需用户的确认。火狐浏览器在配置页面about:config设有一个dom.disable_beforeunload的开关变量用于开启这个功能。

  • 相关阅读:
    xcode 工具栏中放大镜的替换的说明
    xcode 工具栏中放大镜的替换的简单说明
    xcode 资源管理
    泛型的冒泡,插入,选择,希尔算法
    一套手写ajax加一般处理程序的增删查改
    Android自定义控件_自绘控件
    查看自己Android设备分辨率
    Collection集合 和 Map
    深入理解Java中的面向对象
    webserivce请求头组装
  • 原文地址:https://www.cnblogs.com/dhjy123/p/14236106.html
Copyright © 2011-2022 走看看