在警报中禁用“确定”按钮

时间:2017-06-04 07:14:08

标签: javascript jsp alert

有没有办法禁用' Ok' java脚本中的警报按钮?

我有一个java脚本函数调用两个不同的窗口,弹出的第二个窗口被一个警告延迟,因为我需要在打开的第一个窗口中完成一些操作后打开它。我需要禁用警报,直到在第一个窗口中完成某些操作。请提出一些建议。

下面是js函数(myFunction()),它在一个按钮上调用,单击打开两个窗口:

    function myFunction() {
        myFunction2();
        alert("Please wait...");
        myFunction1();
    }

    function myFunction2() {
        var x ="sce";
        var URL ="Multiple.jsp?viewStatus="+x;
        var windowName = "showDeb";
          var width  = screen.availWidth;
          var height = screen.availHeight;
          var w = 900;
          var h =   500;
          var features =
            'width='          + w +
            ',height='        + h +
            ',left='          + ((width - w - 10) * .5)  +
            ',top='           + ((height - h - 30) * .5) +
            ',directories=no' +
            ',location=no'    +
            ',menubar=no'     +
            ',scrollbars=yes' +
            ',status=no'      +
            ',toolbar=no'     +
            ',resizable=false';

           var strOpen = window.open (URL, windowName, features);
           strOpen.focus();
           myFunction1();
    }
    function myFunction1() {
        var x ="deb";
        var URL ="Multiple.jsp?viewStatus="+x;
        var windowName = "showSce";
           var width  = screen.availWidth;
           var height = screen.availHeight;
           var w = 900;
           var h =  500;
           var features =
               'width='          + w +
               ',height='         + h +
               ',left='       + ((width - w - 10) * .5)  +
               ',top='            + ((height - h - 30) * .5) +
               ',directories=no' +
               ',location=no'     +
               ',menubar=no'      +
               ',scrollbars=yes' +
               ',status=no'   +
               ',toolbar=no'      +
               ',resizable=false';

            var strOpen = window.open (URL, windowName, features);
            strOpen.focus();
    }

1 个答案:

答案 0 :(得分:0)

我建议使用Cookie在您的窗口之间进行通信。 在窗口1中设置cookie一旦完成过程。

var date = new Date();
date.setDate(date.getDate()+1); 
document.cookie = "name=win1; path=/; expires="+date.toGMTString()

在将打开窗口2的父文件中,添加计时器以等待窗口1设置cookie。

   var myVar = setInterval(myTimer, 1000); // Poll every second to check if window 1 has completed its execution by checking cookie.
   function myTimer() {
      var cookies = document.cookie.split(";");

      for (var i = 0; i < cookies.length; i++) {
        if (cookies[i].trim() == "name=win1") {
          // stop timer and open win 2
          clearTimeout(myVar);
          document.getElementById("msg2").innerHTML = "Process in window 1 completed";

         // <<< Open window 2 here >>>

          var dateNow = new Date();
          document.cookie = "name=win1; path=/; expires="+dateNow.toGMTString();
        }
      }

确保在打开第一个窗口之前以及在打开窗口2之后删除cookie,否则在重新运行时会导致问题,因为在窗口1完成该过程之前cookie已经存在。 要删除cookie,只需将到期日设置为当前时间或私密时间。

var dateNow = new Date();
document.cookie = "name=win1; path=/; expires="+dateNow.toGMTString();

这是一个演示相同的例子。确保允许弹出,因为它会尝试打开新窗口。 http://embed.plnkr.co/MVa45iwYuW9asQuYRzBV/