2011-12-04 478 views
2

我想根据用户因onbeforeunload事件而单击的内容执行某个操作。例如,如果用户点击“停留在当前页面”,则执行一些操作,否则执行其他操作。如何获得onBeforeUnload的返回值

我没有办法获取onbeforeunload的返回值,并根据它做一些操作。

任何帮助将不胜感激。

回答

1

有两点需要注意:

  1. 后,用户不点击“停留在当前页上,”他们会从你的页面,这意味着你不是真的要能够运行导航离开任何更多的JavaScript。
  2. 回调返回值(通常)只能由调用回调的更高级代码使用。回调的整个是它在将来的某些(通常未知且通常[相对]不重要)点执行。所以,(通常)不能依赖从回调中返回任何东西,因为你不知道它何时会被执行。所以你(通常)需要考虑以不同的方式解决问题。
2

不幸的是,你不能这样做。那么,不直接。 onbeforeunload要求浏览器打开一个对话框,它不会告诉你结果。

你可以做的一件事情是将全局变量设置为false,当触发onbeforeunload时,将其设置为true。然后你可以有一个setInterval检查这个变量,如果它是真的,假设他们点击'停留'。

也有onunload,您可以在用户离开页面时使用,因此您可以在离开时运行某些JavaScript,但无法重定向它们或阻止它们离开。

我在这里做一个例子:http://jsfiddle.net/QxrkD/1/

关注当你点击是“假”或“留”点击链接后控制台。