Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.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 - Fatal编程技术网

自定义JavaScript警报未停止页面关闭

自定义JavaScript警报未停止页面关闭,javascript,Javascript,当页面即将关闭时,我正在使用下面的自定义警报。问题是,在用户可以单击自定义警报上的“确定”按钮之前,警报将弹出,页面将关闭。缺少的是自定义警报,即在用户单击“确定”按钮之前无法保持页面打开 window.onbeforeunload = function() { { return custom_alert(head, txt); } function custom_alert(head, txt) { var d = document; var c_obj =

当页面即将关闭时,我正在使用下面的自定义警报。问题是,在用户可以单击自定义警报上的“确定”按钮之前,警报将弹出,页面将关闭。缺少的是自定义警报,即在用户单击“确定”按钮之前无法保持页面打开

window.onbeforeunload = function() {
   {
      return custom_alert(head, txt);
   }


function custom_alert(head, txt) {
  var d = document;
  var c_obj = d.getElementsByTagName("body")[0].appendChild(d.createElement("div"));
  c_obj.id = "contain";
  c_obj.style.height = d.documentElement.scrollHeight + "px";
  var alertObj = c_obj.appendChild(d.createElement("div"));
  alertObj.id = "alert";
  if (d.all && !window.opera)
    alertObj.style.top = document.documentElement.scrollTop + "px";
  alertObj.style.left = (d.documentElement.scrollWidth - alertObj.offsetWidth) / 2 + "px";
  alertObj.style.visiblity = "visible";
  var h1 = alertObj.appendChild(d.createElement("h1"));
  h1.appendChild(d.createTextNode(head));
  var msg = alertObj.appendChild(d.createElement("p"));
  msg.innerHTML = txt;
  var btn = alertObj.appendChild(d.createElement("a"));
  btn.id = "close";
  btn.appendChild(d.createTextNode('ok'));
  btn.focus();
  btn.onclick = function() {
    c_obj.parentNode.removeChild(c_obj);
  };
  alertObj.style.display = "block";
}

我找到了一个解决此问题的库:

官方警报:
警报(“哎呀……出了点问题!”)

更改的警报:
sweetAlert(“哎呀……”,“出了点问题!”,“错误”)


此库解决了创建自己的警报的许多问题。

不,您只创建了一个模仿模态对话的dom对象(这里是一个div)。最后一个会阻止程序的执行,而您的不会“TOBEFOREUNLOAD”是唯一的东西-您不能用DOM中的任何东西阻止任何东西。
window.addEventListener('beforeunload',函数(e){e.preventDefault();})
例如,询问用户是否关闭此可能包含未保存数据的页面。您无法显示自定义对话框。[Here][1]是一个很好的解释。[1]: