2016-07-27 114 views
0

因此,对于此项目,我正面临一些问题。Internet Explorer弹出窗口和关闭窗口的问题

概述:我向客户发送指向网页的链接。在该网页上,我需要以方便的方式向我的用户显示信息(名字,姓氏,dob等),这些信息将被复制并粘贴到第三方页面中。我原本想使用iFrame,并在一页上显示信息和第三方网站,但第三方已阻止iFrame。我的下一个解决方案是创建2个弹出窗口,用于启动网页的加载,一个是屏幕顶部的细水平信息以及所需的信息,另一个是用第三方网站填充页面的其余部分。当其中一个子窗口关闭时,我需要的下一个功能太容易使3页(登录页面,信息窗口和第三方站点)关闭。

我已经得到了正是我想在Chrome中工作的,但问题是我需要在Internet Explorer中工作。在Chrome中,网页会自动启动两个弹出窗口,当其中一个关闭时,所有三个窗口都会关闭。在IE中,两个网页弹出,但随后几秒钟后自动退出并关闭。

这里是我的代码:

<!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(),将布尔值设置为false。

var childLoaded = true; 

myWindowB.addEventListener("unload", function(){childLoaded=false;});