如何在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中检测浏览器选项卡是不是关闭或浏览器窗口