Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何让窗口消息保持不变,直到用户单击按钮才离开页面?_Javascript_Dojo - Fatal编程技术网

Javascript 如何让窗口消息保持不变,直到用户单击按钮才离开页面?

Javascript 如何让窗口消息保持不变,直到用户单击按钮才离开页面?,javascript,dojo,Javascript,Dojo,我需要创建带有窗口的dojo按钮,当用户试图离开页面时,该窗口会弹出 dojo.addOnUnload(window, "test"); function test() { if(hasPendingChange){ //function goes here i believe } } 我很确定这是正确的格式,但它会离开页面,而不是等待用户的响应。有什么想法吗 谢谢大家! 您不能覆盖beforeunload的默认实现 可以将eventhandler连接到window.onbef

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

dojo.addOnUnload(window, "test");
function test() {
  if(hasPendingChange){
    //function goes here i believe
  }
}
我很确定这是正确的格式,但它会离开页面,而不是等待用户的响应。有什么想法吗


谢谢大家!

您不能覆盖beforeunload的默认实现

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

窗口.onbeforeunload
是一个函数,由本机JS引擎调用,它需要一个
字符串
。它将(始终)弹出一个本机
confirm(str)
对话框,即-如果beforeuload函数返回
str

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

所以,以身作则

var g_ChangesMade = false;
window.onbeforeunload = function() {
    return (g_ChangesMade == true ? "Leaving Page with unsaved changes" : null);
}
将显示一个带有字符串的confirmdialog-如果进行了全局更改

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

除非使用浏览器的内置对话框,否则无法阻止用户离开页面。事情是这样的,我想让我的dojo警告按钮出现。而不是默认的警告消息。默认消息只显示两个选项,而我想在dojo警告消息中添加更多按钮选项。