从不同选项卡打开时出现Javascript弹出问题

Javascript pop-up issue when openned from different tabs

本文关键字:Javascript 出问题 选项      更新时间:2023-09-26

我已经在Internet explorer选项卡中打开了我的应用程序,比如"TAB1",单击"TAB1"中的按钮,比如"button1",将打开一个弹出窗口,比如"pop-UP1"。在"pop-UP1"屏幕中,如果我单击一个按钮,它将在"TAB1"屏幕(父屏幕1)中添加一些元素。

现在,我在同一个IE浏览器窗口的另一个选项卡中打开我的同一个应用程序,比如"TAB2",然后单击"button1",打开"相同"中的弹出窗口"POP-UP1"(因为window.open()函数代码与相同的弹出名称相同)。现在,当我尝试在"TAB2"(父屏幕2)中添加一些元素时,它没有添加到"TAB2),而是在"TAB1"屏幕中添加元素。

如何编写javascript代码,在弹出窗口启动的正确父屏幕中添加元素。我希望相同的弹出窗口适用于所有打开的选项卡,而不是从不同的选项卡打开许多弹出窗口。

请帮帮我。

我认为是因为弹出窗口的名称相同:弹出窗口的parent.opener是第一个选项卡…所以它总是引用它。

我所能想到的就是有一个不同的弹出名称对于每个选项卡,都会打开站点。

通过这种方式,你将有2个(或更多)弹出窗口,每个弹出窗口都将引用自己的父母.oopener。

试试这个:

var myTime=new Date().getTime();
var popupName="mypopup_"+myTime;
var myPopup=null;
function popMypopup(URL){
    myPopup=window.open(URL,popupName,"height=50,width=50");
    myPopup.focus();
}

要弹出窗口,请使用

popMypopup('your/url/here.html')

您可以尝试查看弹出窗口的父打开程序是否指向当前窗口。。。如果它不关闭并重新打开它。

类似这样的东西:

var myPopup=null;
function popMypopup(URL){
        myPopup=window.open(URL,"mypopup","height=50,width=50");
        myPopup.focus();
        if(myPopup.parent.opener!=window){
            myPopup.close();
            popMypopup(URL);
        }
    }

PS:仅在IE上测试。。。但我认为它应该适用于所有浏览器。