【问题标题】:control window.onbeforeunload event控制 window.onbeforeunload 事件
【发布时间】:2012-08-24 05:59:51
【问题描述】:

出于好奇,我可以控制 window.onbeforeunload 事件,例如检查用户是否决定离开页面或留在页面中,如果是,我可以根据他的决定发出警报或某些功能,请告诉我

<script type="text/javascript">
$(window).bind("beforeunload",function(){
if(//stay on page)
alert("i want to stay on the page");
else //leave page
 alert("i want to leave the page");
});
</script>

我知道 window.onbeforeunload 是一个事件,它给用户一个消息,告诉他也许你在离开之前忘记做某事,但这个任务只是出于好奇,谢谢

【问题讨论】:

  • 我只是在做一些研究,我的目标不是像示例中那样触发警报消息,我的目标是触发一个执行一些 javascript 代码的 javascript 函数

标签: javascript jquery


【解决方案1】:

您只能返回一个字符串,该字符串将显示一个对话框确认,显示您返回的字符串(但带有额外的确定/取消按钮来确认操作)。

<script type="text/javascript">
$(window).bind("beforeunload",function(){
return 'Are you sure you want to leave this page?';
});
</script>

【讨论】:

    【解决方案2】:

    您无法获得onbeforeunload 的结果。此外,即使您以某种方式设法找到获得结果的方法,您也无法发出警报。您可能可以运行另一个函数。

    The showModalDialog(), alert(), confirm() and prompt() methods are now allowed to do nothing during pagehide, beforeunload and unload events.

    【讨论】:

    • @Sora 不,没有,因为浏览器还没有实现这样的方法。
    【解决方案3】:

    设置一秒钟的计时器。卸载时清除它。应该可以,但没有测试。

    window.addEventListener('beforeunload', function (event) {
    
      var timeId = setTimeout(yourFunctionIfTheUserStays, 1000);
    
      window.addEventListener('unload', function (event) {
        clearTimeout(timeId);
      })
      return 'Are you sure you want to leave this page?';
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-03
      • 1970-01-01
      • 2018-12-12
      • 1970-01-01
      • 2019-06-20
      • 1970-01-01
      • 2014-04-20
      • 2011-10-19
      相关资源
      最近更新 更多