如何获取onBeforeUnload的返回值

时间:2011-12-04 19:57:46

标签: javascript

我想根据onbeforeunload事件导致用户点击的内容执行某项操作。例如,如果用户点击“留在当前页面上”然后执行某些操作,则执行其他操作。

我无论如何都无法获取onbeforeunload的返回值并根据它执行某些操作。

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

不幸的是,你无法做到这一点。好吧,不是直接的。 onbeforeunload要求浏览器打开一个对话框,但它并没有告诉您结果。

您可以做的一件事是将全局变量设置为false,并在触发onbeforeunload时将其设置为true。然后,您可以setInterval检查该变量,当它变为真时,假设他们点击了“保持”#。

当用户离开页面时,您还可以使用onunload,因此您可以在他们离开时运行一些JavaScript,但您无法重定向或阻止他们离开。

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

当您点击“离开”时,请观看控制台。或者'逗留'点击链接后。

答案 1 :(得分:1)

有两点需要注意:

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