如何判断打开的窗口是弹出窗口还是选项卡?

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

我一直面临一个问题。我可以使用

window.open
方法打开一个窗口。如果我指定窗口的高度和宽度,它将作为弹出窗口打开。如果没有给出高度或宽度参数,则会在新选项卡中打开。

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

javascript jquery html
3个回答
5
投票

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

似乎这些窗口上没有不同的“类型”,只是不同的选项。 我发现检查它是选项卡还是窗口的一种方法是检查

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' 为 null 或不是对象


如果指定了宽度和高度,则意味着您还必须指定

name
参数。这可以以与
target
标签中的
a
相同的方式使用,默认为
_blank

如果您没有指定宽度和高度,我假设您也没有指定

name
,因此它会用
name=_blank
打开,这意味着一个新选项卡。

如果您指定宽度和高度,您是否正在设置自定义

name
?这样做会产生一个子窗口。如果您指定名称或空字符串作为名称,如果您希望它成为新选项卡,我建议您尝试
name:_blank

如果窗口是用名称打开的,您始终可以从子窗口中使用

window.parent
。如果你用
_blank
打开我不确定你是否能得到
window.parent

w3schools 窗口打开


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


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>
© www.soinside.com 2019 - 2024. All rights reserved.