【问题标题】:How do i reset beforeunload in jquery我如何在 jquery 中重置 beforeunload
【发布时间】:2017-12-20 11:49:07
【问题描述】:

我有这个过程设置来询问用户是否希望离开聊天室。如果是,则处理卸载,并在房间中写入用户离开聊天室的消息,并将聊天室占用率减少 1。

这部分工作正常......

但是,如果用户选择停留(并在弹出窗口中单击“停留”),那么它会停留在页面上,这很好。但是,下次用户决定离开时,不会第二次执行 beforeunload,他会收到页面上没有问题。

那么,如果 beforeunload 停留在页面上,我该如何重置它以便再次执行?

这是我的代码:

   /* ask them the question about leaving */

   $(window).one("beforeunload", function () {
       return 'Do you want to leave the chat room?';
   });

   /* they chose to leave */

  $(window).one("unload", function () {    

     /* post left room text msg */        
     /* adjust room count */

 });

【问题讨论】:

    标签: javascript jquery onbeforeunload


    【解决方案1】:

    您正在使用.one 附加事件处理程序 - 这意味着它们只会根据您的描述执行一次。尝试将它们更改为.on,如下所示:

       //Ask them the question about leaving
       $(window).on('beforeunload', function () {
           return 'Do you want to leave the chat room?';
       });
    
       //They chose to leave    
       $(window).on('unload', function () {    
          /* post left room text msg */        
          /* adjust room count */    
       });
    

    【讨论】:

    • 非常感谢你的课程,我没有意识到...... :) 你很善良。
    • 在测试完后做一个简短的说明...... [on] 和 [bind] 都可以在 chrome 上完美运行,但由于某种原因,没有一个可以在 firefox 上运行。我认为这值得一提。
    • .bind 在 jQuery 中已被弃用很长时间。不幸的是,这些事件在浏览器中无法始终如一地工作 - 请参阅 stackoverflow.com/questions/14645011/…
    • 是的,我只是想看看 [bind] 是否仍然可以在 FF 中使用...感谢您提供的链接,您对我的帮助很大。 :)
    猜你喜欢
    • 2021-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多