`
langzhiwang888
  • 浏览: 182118 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

[请问您确定要离开本页吗?]的实现方法

 
阅读更多

onunload、onbeforeunload都是在刷新或关闭时调用,可以在<script>脚本中通过window.onunload来指定或者在<body>里指定。区别在于onbeforeunload在onunload之前执行,它还可以阻止onunload的执行。
  onbeforeunload也是在页面刷新或关闭时调用,onbeforeunload是正要去服务器读取新的页面时调用,此时还没开始读取;而onunload则已经从服务器上读到了需要加载的新的页面,在即将替换掉当前页面时调用。onunload是无法阻止页面的更新和关闭的。而onbeforeunload可以做到。
    1、onbeforeunload事件:
  说明:目前三大主流浏览器中firefox和IE都支持onbeforeunload事件,opera尚未支持。
  用法:
   ·object.onbeforeunload = handler
   ·<element onbeforeunload = “handler” … ></element>
  描述:
   事件触发的时候弹出一个有确定和取消的对话框,确定则离开页面,取消则继续待在本页。handler可以设一个返回值作为该对话框的显示文本。

  触发于:
   ·关闭浏览器窗口
   ·通过地址栏或收藏夹前往其他页面的时候
   ·点击返回,前进,刷新,主页其中一个的时候
   ·点击一个前往其他页面的url连接的时候
   ·调用以下任意一个事件的时候:click,document write,document open,document close,window close ,window navigate ,window NavigateAndFind,location replace,location reload,form submit.
   ·当用window open打开一个页面,并把本页的window的名字传给要打开的页面的时候。
   ·重新赋予location.href的值的时候。
   ·通过input type=”submit”按钮提交一个具有指定action的表单的时候。
  可以用在以下元素:
   ·BODY, FRAMESET, window
  平台支持:
   IE4+/Win, Mozilla 1.7a+, Netscape 7.2+, Firefox0.9+
  示例:
      a)
      <html xmlns=" http://www.w3.org/1999/xhtml">
       <head>
         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
         <title>onbeforeunload测试</title>
       <script>
           function checkLeave(){
          event.returnValue="确定离开当前页面吗?";
           }
         </script>
     </head>
     <body onbeforeunload="checkLeave()"></body>
   </html>
      b)
      <html xmlns=" http://www.w3.org/1999/xhtml">
       <head>
         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
         <title>onbeforeunload测试</title>
       <script>
           function checkLeave(){
          event.returnValue="确定离开当前页面吗?";
           }
            window.onbeforeunload = checkLeave;
         </script>
     </head>
     <body></body>
   </html>

    2、onunload事件
  用法:
   ·object.onbeforeunload = handler
   ·<element onbeforeunload = "handler"></element>
  描述:
   当用户关闭一个页面时触发 onunload 事件。

  触发于:
   ·关闭浏览器窗口
   ·通过地址栏或收藏夹前往其他页面的时候
   ·点击返回,前进,刷新,主页其中一个的时候
   ·点击 一个前往其他页面的url连接的时候
   ·调用以下任意一个事件的时候:click,document write,document open,document close,window close ,window navigate ,window NavigateAndFind,location replace,location reload,form submit.
   ·当用window open打开一个页面,并把本页的window的名字传给要打开的页面的时候。
   ·重新赋予location.href的值的时候。
   ·通过input type=”submit”按钮提交一个具有指定action的表单的时候。
  示例:
      a)
      <html xmlns="http://www.w3.org/1999/xhtml">
     <head>
       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
       <title>onunload测试</title>
       <script>
         function checkLeave(){
           alert("欢迎下次再来!");
         }
       </script>
     </head>
     <body onunload="checkLeave()"></body>
   </html>
      b)
      <html xmlns="http://www.w3.org/1999/xhtml">
     <head>
       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
       <title>onunload测试</title>
       <script>
         function checkLeave(){
           alert("欢迎下次再来!");
         }
            window.onunload=checkLeave;
       </script>
     </head>
     <body></body>
   </html>

    ---------------------------------------我是华丽的分割线------------------------------------------
    onbeforeunload与a标签在IE中的冲突bug

    onbeforeunload是window的一个事件,目前Firefox,IE都支持,主要用来提示用户是否真的要离开该页面,通常在一些比较重要的数据提交之前,防止用户误操作导致数据丢失。典型的应用如gmail中,在写邮件的时候,如果刷新页面或者关闭页面,会出现提示。
    但是在IE下点击一些a标签时,也会触发onbeforeunload事件。并且href中写javascript:void(0)也不行,而在Firefox中不会出现类似的情况。于是查资料对onbeforeunload事件重新认识了一下:
    a标签触发事件的顺序
    onclick、onbeforeunload跟href三者之间的先后运行关系是这样的:onclick > onbeforeunload > href,知道了这个道理,我们就可以通过一些方法阻止onbeforeunload。另外在IE浏览器中,假如href为#,那么也不会触发 onbeforeunload事件。
    怎么阻止onbeforeunload
    在Ajax的同时,给a标签加上onclick事件,这样onclick在onbeforeunload之前运行,然后来个return false,就可以啦~
    绕过onbeforeunload直接href
    结合onclick事件,我们可以绕过onbeforeunload直接href,下面的代码就可以绕过onbeforeunload而执行href:
    var a=1;
    window.onbeforeunload=function()
    {
        if(a)alert("onbeforeunload事件爆发了!");
    }
    只要我们在onclick事件加上一个a=0;就可以了~
    实例
    此处使用了window.onbeforeunload对onclick、onbeforeunload和href进行的测试。

分享到:
评论

相关推荐

    如何实现chrome浏览器关闭页面时弹出“确定要离开此面吗?”

    总结起来,要在Chrome浏览器中实现“确定要离开此页吗?”的提示,你需要正确地绑定和解绑 `onbeforeunload` 事件,并根据当前浏览器的版本和策略调整你的代码。同时,考虑到跨浏览器兼容性,可能需要采用不同的策略...

    vue实现表单未编辑或未保存离开弹窗提示功能

    但是,在Vue中,我们可以通过更简单的方法来实现,即使用Vue的`watch`属性来观察表单数据的变化。 ### 实现思路 要实现这个功能,我们需要: 1. 监听表单数据的变化。 2. 当检测到数据变化时,如果用户尝试离开...

    javascript经典特效---离开页面弹出窗口.rar

    在本主题"javascript经典特效---离开页面弹出窗口"中,我们主要关注的是如何利用JavaScript来实现用户试图离开网页时弹出确认对话框的功能。 在网页设计中,有时我们希望在用户即将关闭浏览器窗口或跳转到其他页面...

    离开页面时候的警告

    标题中的“离开页面时候的警告”指的是在用户尝试离开一个网页时,网页通过JavaScript或者其他技术显示的提示信息,通常用于确认用户是否真的想要离开,或者提醒用户保存未完成的工作。这种功能常见于在线表单填写、...

    JavaScript实现离开页面前提示功能【附jQuery实现方法】

    在网页开发中,有时我们需要在用户试图离开当前页面时提供一个提示,确认用户是否真的想要离开。JavaScript提供了这样的功能,通过`onbeforeunload`事件,我们可以实现离开页面前的提示。本文将详细介绍如何使用...

    js 页面关闭前的出现提示的实现代码.docx

    `onbeforeunload` 是一个非常有用的事件,它在窗口或文档卸载之前触发,可以用来提醒用户是否确认离开页面。下面是一个简单的示例: ```javascript window.onbeforeunload = function () { return "确定离开页面吗...

    js实现用户离开页面前提示是否离开此页面的方法(包括浏览器按钮事件)

    这个事件常用于实现确认离开页面的提示。开发者可以为这个事件指定一个函数,在这个函数中返回一个字符串,该字符串会被用作弹出对话框的提示信息。用户如果选择离开,则会忽略这个信息,继续离开页面;如果用户选择...

    离开网页onbeforeunload事件在火狐的兼容并且提交不触发

    这个事件的典型应用场景包括弹出确认对话框,询问用户是否确定要离开,或者在后台保存用户的工作进度。JavaScript中的处理函数可以返回一个字符串,这个字符串会被浏览器用来显示在确认对话框中。 在火狐浏览器中,...

    JavaScript 关于浏览窗口不关闭的问题

    return '您确定要离开此页面吗?'; }; ``` 当用户尝试关闭窗口(例如点击浏览器的关闭按钮或者导航到另一个页面)时,这段代码会弹出一个对话框,显示提供的字符串作为提示信息。如果用户选择留在当前页面,他们将...

    页面离开时检查表单是否改变

    var confirmationMessage = '您有未保存的更改,确定要离开吗?'; event.preventDefault(); // 阻止默认行为,如页面跳转 event.returnValue = confirmationMessage; // Chrome需要此属性 } }); ``` 请注意,...

    vue离开当前页面触发的函数代码

    const confirm = window.confirm('确定要离开此页面吗?'); if (confirm) { next(); } else { next(false); } }, // ... }; ``` 在这个例子中,我们使用了`window.confirm`弹出一个确认对话框,让用户确认...

    离开页面时提醒你加入书签

    return '您确定要离开此页面吗?加入书签可以方便下次快速访问哦!'; }; ``` 2. **AJAX异步通信**:为了让用户体验更佳,我们可以使用AJAX进行异步通信,将用户是否已添加书签的状态存储在服务器端。这需要在用户...

    jQuery带页面跳转的确认提示框代码

    var message = "您确定要离开此页面吗?"; // 自定义提示消息 if (!confirm(message)) { return; // 如果用户点击取消,则不进行跳转 } // 如果用户点击确定,执行原本的页面跳转或操作 var url = $(this)....

    javascript经典特效---离开启动收藏夹.rar

    return '您确定要离开此页面吗?未保存的数据可能会丢失!'; }; ``` 这段代码会在用户尝试离开页面时弹出一个确认对话框,询问他们是否真的要离开。当然,为了用户体验,这样的提示应该谨慎使用,避免频繁打扰用户...

    JavaScript关闭当前页面(窗口)不带任何提示

    if(confirm("您确定要关闭本页吗?")){ window.opener=null; window.close(); } else { // 如果用户点击“取消”,则可以在这里执行其他操作。 } } 关闭本页" onClick="custom_close()" /&gt; ``` 在这个例子中...

    javascript+css实现的离开网站时显示模态弹窗特效源码.zip

    这个压缩包"javascript+css实现的离开网站时显示模态弹窗特效源码.zip"包含了一个利用这两种技术实现的功能:当用户尝试离开网站时,会弹出一个模态窗口进行提示。这种功能在用户体验设计中很常见,用来确认用户的...

    js实现关闭网页出现是否离开提示

    本文将深入探讨如何利用JavaScript实现一个功能,即在用户尝试关闭网页时弹出一个提示框询问用户是否确实要离开。 在JavaScript中,有两个关键的事件属性可以帮助我们实现这个功能:`onbeforeunload` 和 `onunload`...

    基于jQuery实现的当离开页面时出现提示的实现代码

    return '您输入的内容尚未保存,确定离开此页面吗?'; }); // 解除绑定 $(window).unbind('beforeunload'); ``` 在这个例子中,当窗口即将卸载前,会触发`beforeunload`事件,并运行一个函数。如果返回一个字符串...

Global site tag (gtag.js) - Google Analytics