如何保持窗口消息并且在用户单击按钮之前不离开页面?

时间:2012-07-18 16:29:10

标签: javascript dojo

我需要创建dojo按钮,当用户试图离开页面时会弹出窗口。

dojo.addOnUnload(window, "test");
function test() {
  if(hasPendingChange){
    //function goes here i believe
  }
}

我很确定这是正确的格式,但它离开页面而不是等待用户的响应。有什么想法吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

您无法覆盖beforeunload的默认实现。

可以将eventhandler连接到window.onbeforunload,但是多个处理程序是一个问题,因为结果可能与您的预期不同。

window.onbeforeunload是一个函数,由本机JS引擎调用,它需要String。它将(总是)弹出一个本地confirm(str)对话框,即 - 如果从beforeunload函数返回str

阻止它弹出confirm的唯一方法是拨打阻止电话(如dijit.Dialog{..}).show(); while(1))并且这不可行,我相信你已经知道了。此外,您必须告诉用户,在对话框中选择“否”,当您打破无尽的时间时最终会弹出:)

所以,例如明智的

var g_ChangesMade = false;
window.onbeforeunload = function() {
    return (g_ChangesMade == true ? "Leaving Page with unsaved changes" : null);
}

将显示带字符串的confirmdialog - 如果全局_更改

  --------------------
  | Leaving Page...  |
  |                  |
  |  Ok     Cancel   |
  --------------------