如何在javascript中的另一个子窗口的选项卡中打开子窗口?

问题描述 投票:1回答:3

我在这里用javascript中的一个简单问题苦苦挣扎。 我想做的事: 1.从主页面打开一个弹出窗口(p1)。 2.从第一个弹出窗口(p1)打开另一个弹出窗口(p2)。 3.现在我想在p1的选项卡中打开p2的弹出窗口。 我使用以下代码:

var test = null;
// open first popup(p1) from main page
function openpopup1(URL,id) {
    test = eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=1,width=850,height=650,left = 520,top = 300');");
}

// open second popup(p2) from p1 popup
function openpopup2(URL,id){
    eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=1,width=650,height=300,left=650,top = 280');");
}

// now open popup into p1's tab from p2 popup
function openpopupTop1stab(){
    var newTab = window.open("tab.html");  
    window.test.opener(newTab); 
    // this code is not working
}

我怎么解决这个问题?

javascript
3个回答
0
投票

这是不可能的。 JavaScript没有“标签”的概念。它纯粹是浏览器(或由于用户的浏览器配置)决定如何显示用window.open打开的“窗口”。


1
投票

我不确定我理解这个问题。如果你真的想在窗口中打开一个标签,如上所述,这是不可能的。浏览器不会将该功能暴露给页面。您可以通过单击页面顶部附近的按钮显示和隐藏div来制作类似于标签的控件,并且可以单独更新窗口或更改那些“选项卡式”div(可能包含iframe)如果你想在其中显示整个页面)。您需要保持对打开的窗口的引用,以便您可以在它们之间进行通信。

如果您只想控制窗口或标签中显示的内容,那就容易多了。

'window.open'的第二个参数是窗口名称。如果您打开具有该窗口名称的其他页面,或单击具有该名称的“目标”属性的链接,则新页面将在该现有窗口中打开。

所以你可以这样做:

window.open("p1.html", "p1");
window.open("p2.html", "p2");

然后,如果你这样做:

window.open("p3,html", "p1");

它将在最初为“p1.html”打开的窗口或标签中打开“p3.html”页面。

还有效:

<a href="p3.html" target="p1">Open in p1 tab/window</a>

(注意:特殊窗口名称“_blank”表示始终打开一个新窗口)


0
投票

我注意到这是旧的,但现在有一些Chrome扩展程序强制打开新窗口作为新标签。如果你去here,它是我自己使用的扩展,它工作得很好。

© www.soinside.com 2019 - 2024. All rights reserved.