2016-08-15 61 views
0

的对话框,在所有浏览器和操作系统座/禁用我正在寻找的东西beforeunload

以此为参考的作品https://developer.mozilla.org/en-US/docs/Web/Events/beforeunload

我有什么到目前为止

window.addEventListener("beforeunload", function (e) { 
    var confirmationMessage = null; 
    // do some ajax stuff // just setting a SESSION variable 
    e.returnValue = confirmationMessage; 
    return confirmationMessage; 
}); 

由于事件有时会发生,有时甚至不会发生,因此很难排除故障。似乎我需要在重新触发之前暂停一下。 触发我感兴趣的事件的方式是刷新和返回按钮。

Safari浏览器似乎工作但不是Chrome或Firefox

感谢您的想法来。

回答

0

作为一种替代方案,您可以在localStorage中存储需要与会话同步的数据,以及用户何时返回页面检查是否有任何数据要与服务器同步。同步后,您需要清除localStorage中的数据。

优点:

  • 这是同步
  • 将在任何现代的浏览器中正常工作

缺点:

  • 可能需要您确保同步的应用程序之前进行如果它取决于此会话变量,则加载它
+0

从未使用localStorage,但我确实在浏览器首选项中看到它 目标是在第二次返回时只附加一个iframe。 iframe有点触发脚本 谢谢@axelduch – Franck

+1

这就是我最终做的。 var flag = JSON.parse(localStorage.getItem('flag')); if(flag == null)var flag = {}; flag.yes = 0; localStorage.setItem('flag',JSON.stringify(flag)); \t } else if(flag.yes == 0){('body')。append('