如何识别打开的窗口是弹出窗口还是标签?

时间:2013-02-19 09:49:49

标签: javascript jquery html

我遇到了一个问题。我可以使用window.open方法打开一个窗口。如果我指定窗口的高度和宽度,它将作为弹出窗口打开。如果没有为高度指定参数或宽度,然后在新标签页中打开。

是否有任何属性我可以确定打开的窗口是弹出窗口还是新选项卡?

谢谢 Malcolm X

3 个答案:

答案 0 :(得分: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 Error: 'window.toolbar.visible' is null or not an object


如果指定宽度和高度,则表示您还必须指定name参数。这可以与使用target标记中a的方式相同,默认为_blank

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

如果指定宽度和高度,是否设置了自定义name?这样做会导致子窗口。如果您指定名称或空字符串作为名称,我建议您尝试name:_blank,如果您希望它成为新标签。

如果使用名称打开窗口,则始终可以从子窗口中window.parent。如果您使用_blank打开,我不确定您是否可以获得window.parent

w3schools Window Open

答案 1 :(得分: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

答案 2 :(得分: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>