2017-06-04 105 views
0

有什麼辦法可以禁用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(); 
    } 

回答

0

我會建議使用Cookie您的Windows之間的通信。 在窗口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(); 
     } 
     } 

請確保您刪除cookie窗口中的一個被打開,車窗2打開後否則就會造成問題的窗口1完成此過程之前重新運行作爲cookie將是已經存在了。 要刪除cookie,只需將有效期設置爲當前時間或私密性。

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

下面是一個演示相同的例子。確保你允許彈出,因爲它會嘗試打開新窗口。 http://embed.plnkr.co/MVa45iwYuW9asQuYRzBV/

+0

感謝您的建議。但我有一個查詢,我從上面瞭解到的是,如果我知道完成窗口1中的過程所需的時間,我可以使用這種方法。在我的情況下,時間不是固定的,它可以更多地基於數據 – ANITI

+0

您不需要知道在窗口1中完成該過程所需的時間。正如您所說的,窗口1中運行的過程基於數據,需要在完成過程後設置cookie。 父窗口中打開窗口2的計時器將每秒輪詢(可配置),以檢查cookie是否設置爲無限時間,直到窗口1設置cookie。 如果您想在父母停止輪詢無限時間,您還可以保持超時(如30分鐘)。 –