2016-07-27 3 views
0

このプロジェクトでは少し問題があります。Internet Explorerのポップアップウィンドウとクローズウィンドウで問題が発生する

概要:クライアントにウェブページへのリンクを送信します。このウェブページでは、私のユーザに情報を(名字、姓、dobなど)表示する必要があります。この情報は、コピーされてサードパーティのページに貼り付けられます。もともとiFrameを使用して情報とサードパーティのサイトを1ページに表示したいのですが、第三者にはiFrameがブロックされていました。私の次の解決策は、Webページのオンロードを開始する2つのポップアップウィンドウを作成することでした。画面の上部には、必要な情報が表示され、もう1つはサードパーティサイトに残ります。私が必要とする次の機能は、子ウィンドウの1つが閉じられたときに、3ページ(ランディングページ、情報ウィンドウ、および第三者サイト)を近づけすぎることです。

私はChromeで正確に何をしたいのですか?問題はInternet Explorerで作業する必要があることです。 Chromeでは、ウェブページが2つのポップアップウィンドウを自動的に起動し、いずれかが閉じられると3つのウィンドウがすべて終了します。 IEでは2つのWebページがポップアップしますが、自動的に2〜3秒後に終了して閉じます。ここで

は私のコードです:

<!DOCTYPE html> 
<html> 
<meta charset="ISO-8859-1"> 
<button onclick="closeWin()"> Close</button> 
<body onload="infoPopup()"> 
</body> 

<script> 
var myWindow; 
var myWindowB; 
function infoPopup(){ 

     var windowDimensions = ("scrollbars=1,width="+(screen.width-10)+",height=150"); 
     myWindow = window.open("", "MsgWindow", windowDimensions); 
     myWindow.moveTo(0,0); 
     myWindow.location="https://google.com" 

     var myWindowBDimensions = ("scrollbars=1,width="+(screen.width-10)+",height="+(screen.height-250)); 
     myWindowB = window.open("", "myWindowB", myWindowBDimensions); 
     myWindowB.moveBy(0,150); 
     myWindowB.location="https://wikipedia.org"; 

     var timer = setInterval(checkChild, 500); 

     function checkChild() { 
      if (myWindow.closed||myWindowB.closed) { 
       closeWin(); 
       clearInterval(timer); 
      } 
     } 
} 
     function closeWin(){ 
      myWindow.close(); 
      myWindowB.close(); 
      window.close(); 
     } 
</script> 
</html> 

私は問題を想定してい

if (myWindow.closed||myWindowB.closed) 

はたぶんIEが適切にこれらの条件を読んでいないされてありますか?

ポップアップはしばしば悩まされ、コントロールするウェブページはユーザーに任せておくべきですが、このプロジェクトではこれはプロセスのほんの一部であり、完了してすぐに閉じる必要があります。他の選択肢に対する助言や提案は大変ありがたいです!

答えて

0

これは、Internet Explorer 9の既知のバグのようです(this bug report)。

window.onunload()またはwindow.unbeforeunload()を使用すると、親ウィンドウにブール値を保持してからonunload()を無効にし、boolをfalseに設定するというMicrosoftの回避策と同様に、

var childLoaded = true; 

myWindowB.addEventListener("unload", function(){childLoaded=false;}); 
関連する問題