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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在javascript中的另一个子窗口的选项卡中打开子窗口?相关的知识,希望对你有一定的参考价值。

我在这里用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没有“标签”的概念。它纯粹是浏览器(或由于用户的浏览器配置)决定如何显示用window.open打开的“窗口”。

另一答案

我不确定我理解这个问题。如果你真的想在窗口中打开一个标签,如上所述,这是不可能的。浏览器不会将该功能暴露给页面。您可以通过单击页面顶部附近的按钮显示和隐藏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”表示始终打开一个新窗口)

另一答案

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

以上是关于如何在javascript中的另一个子窗口的选项卡中打开子窗口?的主要内容,如果未能解决你的问题,请参考以下文章

如何将数据从子视图传递到父视图到 SwiftUI 中的另一个子视图?

如何在javascript中检测浏览器选项卡是不是关闭或浏览器窗口

如何从Oracle中的另一个子查询中选择具有最大列的行

如何从位于访问中的另一个子窗体中的组合框中过滤子窗体?

需要在 javascript 中为选项卡窗口和 Internet Explorer 中的新窗口提供唯一 ID [重复]

如何以编程方式切换到 UITabBarController 中的另一个选项卡?