2017-06-03 2 views
0

シナリオ:ウィンドウの変更についてユーザーに警告したいだけです。だから私はjQueryのウィンドウのぼかしを使用しました& JavaScriptの確認ダイアログボックス。ユーザーが[OK]ボタンをクリックすると、アプリケーションは別のページ&にリダイレクトされます。ユーザーがCANCELボタンをクリックすると何も起こりません。彼は同じページで作業を続けることができます。JavaScriptの確認ダイアログボックスでキャンセルイベントが発生したときに再生成を続ける

問題::OKボタンは完全に機能していますが、キャンセルボタンをクリックすると、ブラウザはダイアログボックスを再生成し続けます。それをどうやって止めるの?

CODE

$(window).blur(function (e) { 

     var closeWindow = window.confirm("Your test will be cancelled if you switch the tabs."); 

     if (closeWindow) { 

      // redirect to another page 

     } 
     else { 

      // do nothing. 
     } 
}); 
+2

ユーザーは 'blur'イベントが発生することが原因と、別のタブをクリックしますが、ブラウザはタブを変更するために管理する前に、それは' confirm'ダイアログで停止しています。ユーザーがキャンセルすると、ブラウザはタブを変更しようとし続け、「blur」イベントを発生させ、再び中断されます。これはおそらく永遠に続く(今Chrome 58でテストされている)。 – ROAL

答えて

0

@ROALが説明したように、第1 blurイベントがあるため、実際のぼかしのものであり、残りは理由タブから移動しようとしているブラウザです。このための簡単な解決策は、ユーザー生成イベントとブラウザー生成イベントを区別するためにフラグを使用することです。これを試してみる:

var manualCancellation = false; 
$(window).blur(function (e) { 
    if(!manualCancellation){ 

     var closeWindow = window.confirm("Your test will be cancelled if you switch the tabs."); 
     console.log(e); 
     if (closeWindow) { 

      // redirect to another page 

     } 
     else { 
      manualCancellation = true; 
      // do nothing. 
     } 
    } else { 
     // Reset the value of manualCancellation so that the event is fired the next time. 
     manualCancellation = false; 

    } 
}); 
+0

ありがとう、Nisarg。それは期待どおりに動作します。 –

+0

あなたは大歓迎です! – Nisarg

関連する問題