0

我需要创建带有在用户尝试离开页面时弹出的窗口的 dojo 按钮。

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

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

谢谢!

4

1 回答 1

0

您不能覆盖 beforeunload 的默认实现。

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

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

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

所以,明智的例子

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

将显示带有字符串的确认对话框 - 如果进行了全局 _ 更改

  --------------------
  | Leaving Page...  |
  |                  |
  |  Ok     Cancel   |
  --------------------
于 2012-07-18T18:59:12.807 回答