【问题标题】:How do identify whether the window opened is a pop up or a tab?如何识别打开的窗口是弹出窗口还是选项卡?
【发布时间】:2013-02-03 22:58:12
【问题描述】:

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

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

谢谢 马尔科姆 X

【问题讨论】:

标签: javascript jquery html


【解决方案1】:

编辑:我已经对此进行了更深入的研究。

似乎这些窗口上没有不同的“类型”,只是不同的选项。 我发现检查它是选项卡还是窗口的一种方法是检查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 参数。这可以与 a 标签中的 target 一样使用,默认为 _blank

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

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

如果窗口以名称打开,您始终可以从子窗口中输入window.parent。如果你打开_blank我不确定你是否能得到window.parent

w3schools Window Open

【讨论】:

  • 最好不要使用 w3schools 作为参考。
  • 为什么这可能是最好的?我早期从那里学到了很多东西。
  • 您好 Robert Fricke,感谢您的快速回复。我制作了一个由第 3 方按钮打开的网页。我对该按钮没有任何控制权。最初打开了一个弹出窗口如果我点击了第 3 方按钮。属性已由他们设置。还有另一个第 3 方人员创建了一个打开相同网页的不同按钮。唯一的区别是,如果我点击该按钮,它将作为新标签打开。所以我在想有什么方法可以区分窗口打开机制,即它是作为新标签打开还是作为当前窗口顶部的弹出窗口打开。?
  • @5arx 我检查了该帖子,但该功能不起作用:(
  • 我现在也对此感到困惑..似乎window.parent.parent.parent...等等不断返回一个永恒的窗口。而且我还注意到window.open() 有时会在新选项卡中打开一个真实窗口,有时会打开一个弹出子窗口。我猜它与事件的触发方式有关,即:如果键或鼠标事件触发的窗口打开,则打开一个窗口。如果仅触发了纯代码window.open(),则会打开一个弹出窗口。当您的网站在它自己的窗口中打开时,它是一个您无法更改地址的弹出窗口吗?还是普通的窗户?
【解决方案2】:

我不太清楚你的问题是什么意思,但据我了解,你可能想要使用 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

【讨论】:

  • 你好 crimsoniris,正如我在帖子中提到的,我可以打开一个新窗口(无论是弹出窗口还是新标签)。我的直截了当的问题是:-如果打开的窗口本身是新标签还是弹出窗口,是否有任何内置功能可以让我理解? P:S-弹出的意思是,在当前窗口之上打开一个窗口。顺便感谢您的快速回复
  • @Crimsoniris - 我重复关于 www.w3fools.com 的常见警告;-)
【解决方案3】:

你可以通过 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>

【讨论】:

    猜你喜欢
    • 2011-04-16
    • 1970-01-01
    • 2023-02-26
    • 2016-03-10
    • 1970-01-01
    • 2012-01-10
    • 2021-05-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多