Internet Explorer弹出窗口和关闭窗口的问题

时间:2016-07-27 18:38:45

标签: javascript html 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没有正确阅读这些条件?

我知道弹出窗口经常不受欢迎,控制网页应留给用户使用,但对于这个项目来说,这只是一个小过程,需要快速完成和关闭。任何有关其他替代方案的帮助或建议都非常感谢!

1 个答案:

答案 0 :(得分:0)

根据this bug report,这似乎是Internet Explorer 9中的一个已知错误。

您可能能够使用window.onunload()或window.unbeforeunload()来解决一些棘手的问题,类似于Microsoft在父窗口中保留布尔值的解决方法,然后是onunload(),将bool设置为false。 / p>

var childLoaded = true;

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