2017-06-04 9 views
0

Javaスクリプトでアラートの[OK]ボタンを無効にする方法はありますか?アラートで[OK]ボタンを無効にする

私は、2つの異なるウィンドウを呼び出すJavaスクリプト関数を持っています。最初のウィンドウが開いたときに何らかの操作が完了した後に開く必要があるため、2番目のウィンドウのポップアップは警告で遅れます。最初のウィンドウで何らかの操作が完了するまで警告を無効にする必要があります。何らかの方法を提案してください。私はあなたの窓の間で通信するためにクッキーを使用することをお勧めします

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

は、以下のjsの関数である(MyFunctionを())ボタンと呼ばれる2つのウィンドウを開きますクリックします。 ウィンドウ1では、プロセスが完了した後にクッキーを設定します。

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

ウィンドウ2を開く親ファイルで、ウィンドウ1がクッキーを設定するまで待機するタイマーを追加します。

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(); 
     } 
     } 

ウィンドウ1が開かれ、ウィンドウ2が他の開かれた後、ウィンドウ1は、プロセスを完了する前にクッキーが既に存在するとして、それは再実行で問題が発生します前に、クッキーを削除することを確認してください。 クッキーを削除するには、有効期限を現在の時刻または優先度として設定します。

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

以下、同じことを示す例です。新しいウィンドウを開くときにポップアップを許可するようにしてください。 http://embed.plnkr.co/MVa45iwYuW9asQuYRzBV/

+0

ありがとうございます。しかし、私は1つのクエリーを持っています。私が上記から理解したことは、ウィンドウ1でプロセスを完了するのに必要な時間が分かっていれば、この方法を使うことができるということです。私の場合、時間は固定されていないので、データに基づいてより多くのことができます。 – ANITI

+0

ウィンドウ1でプロセスを完了するために必要な時間を知る必要はありません。ウィンドウ1で実行中のプロセスはデータに基づいていますプロセスが完了したらクッキーを設定する必要があります。 ウィンドウ2を開く親のタイマーは、ウィンドウ1がクッキーを設定するまで無期限にCookieが設定されているかどうかを確認するために毎秒ポーリングします(設定可能)。 親のポーリングを無限に停止する場合は、(30分のような)タイムアウトを保つこともできます。 –

関連する問題