4

我一直面临一个问题。我可以使用 window.open 方法打开一个窗口。如果我指定窗口的高度和宽度,它将作为弹出窗口打开。如果没有为高度或宽度提供参数,则它在新选项卡中打开。

是否有任何属性可以让我确定打开的窗口是弹出窗口还是新标签?

谢谢马尔科姆 X

4

3 回答 3

4

编辑:我一直在研究这个问题。

似乎这些窗口上没有不同的“类型”,只是不同的选项。我发现检查它是选项卡还是窗口的一种方法是检查window.menubar.visible. 对于选项卡,它是一个完整且正常的窗口true,而对于弹出菜单,菜单是隐藏的,因此false. 同样适用于window.toolbar.visible

至少在 FF 和 Chrome 中工作。不幸的是,不在 IE 中。(在IE8下进行测试,这是我安装的版本。当然是为了测试..)

例子:

if(window.menubar.visible) {
    //Tab
} else {
    //"Child" Window
}

发现这个线程:Internet Explorer 8 JS 错误:'window.toolbar.visible' 为空或不是对象


如果指定宽度和高度,则意味着您还必须指定name参数。这可以在使用标签时以相同的方式target使用a,默认为_blank.

如果你没有指定宽度和高度,我假设你也没有指定name,因此它是用 来打开的name=_blank,这意味着一个新的选项卡。

如果您指定宽度和高度,您是否设置自定义name?这样做会产生一个子窗口。如果您指定名称或空字符串作为名称,我建议您尝试name:_blank将其作为新选项卡。

如果窗口是用名字打开的,你总是可以window.parent从子窗口中打开。如果你打开_blank我不确定你是否能得到window.parent

w3schools 窗口打开

于 2013-02-19T09:55:34.207 回答
0

我不太确定您在问题中的意思,但据我了解,您可能想要使用 HTML 目标属性:

_blank  Opens the linked document in a new window or tab
_self   Opens the linked document in the same frame as it was clicked (this is default)
_parent     Opens the linked document in the parent frame
_top    Opens the linked document in the full body of the window

framename 在命名框架中打开链接的文档

来源:http ://www.w3schools.com/tags/att_a_target.asp

于 2013-02-19T09:52:43.770 回答
0

您可以通过检查焦点是否丢失来检测使用 onblur

<html>
<head>
<script>
function newTab() {
  document.getElementById("demo").innerHTML = "New tab opened!<br><br>refesh this page to recheck ";
}
window.onblur = newTab;
</script>
</head>
<body>
<div id="demo">
Open a new tab and then check this page
</div>
</body>
</html>
于 2020-07-03T08:51:34.870 回答