我一直面临一个问题。我可以使用 window.open 方法打开一个窗口。如果我指定窗口的高度和宽度,它将作为弹出窗口打开。如果没有为高度或宽度提供参数,则它在新选项卡中打开。
是否有任何属性可以让我确定打开的窗口是弹出窗口还是新标签?
谢谢马尔科姆 X
我一直面临一个问题。我可以使用 window.open 方法打开一个窗口。如果我指定窗口的高度和宽度,它将作为弹出窗口打开。如果没有为高度或宽度提供参数,则它在新选项卡中打开。
是否有任何属性可以让我确定打开的窗口是弹出窗口还是新标签?
谢谢马尔科姆 X
编辑:我一直在研究这个问题。
似乎这些窗口上没有不同的“类型”,只是不同的选项。我发现检查它是选项卡还是窗口的一种方法是检查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
我不太确定您在问题中的意思,但据我了解,您可能想要使用 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 在命名框架中打开链接的文档
您可以通过检查焦点是否丢失来检测使用 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>