【发布时间】:2012-02-29 09:15:46
【问题描述】:
在 Javascript 中,我们可以使用 window.open() 打开一个新的浏览器窗口或选项卡。 但如果一个选项卡已经打开,它应该只突出显示。它不应该打开重复的标签。 该怎么做?
【问题讨论】:
标签: javascript window window.open
在 Javascript 中,我们可以使用 window.open() 打开一个新的浏览器窗口或选项卡。 但如果一个选项卡已经打开,它应该只突出显示。它不应该打开重复的标签。 该怎么做?
【问题讨论】:
标签: javascript window window.open
window.open(strUrl, strWindowName[, strWindowFeatures]); 的second argument 是窗口名称。如果您指定该参数,则“_blank”以外的任何参数都将引用已打开的选项卡/窗口。
例如:
window.open('/about', 'newwindow');
和
window.open('/contact', 'newwindow');
将在已打开的窗口/选项卡中打开页面。
【讨论】:
newwin = window.open(...') 和newwin.focus(); 它适用于弹出窗口,但不适用于Firefox 中的选项卡。在 IE 中,我认为它默认打开新窗口,所以它可以工作。
if (newwin != null) { newwin = window.open('...'); } else { newwin.focus(); }
给窗口一个目标名称: http://www.javascript-coder.com/window-popup/javascript-window-open.phtml
如果已经存在,新的网址将在其中打开
【讨论】:
确保每次都为 window.open() 提供相同的窗口名称! (第二个参数,不能为空)
您需要管理从 window.open() 返回的窗口对象并检查它是否已关闭,请查看 https://developer.mozilla.org/en/DOM/window 和 closed 属性。您必须有一个窗口到 url 列表,这将帮助您决定是使用 window.open() 打开一个新窗口(一个目前未打开的 url)还是使用 opensWindow.focus() (openedWindow是上一次调用 window.open()) 以将窗口显示在视图中所返回的对象。
【讨论】:
Candide 的代码需要稍作修正。应检查 null 条件,而不是 "!="
popwin.html 是您要在弹出窗口中打开的页面。我知道这已经回答了,只是发布以防以后有人想参考。
主窗口代码:
<script type='text/javascript'>
var newwin;
function popup(){
if (newwin == null)
{
window.open('popwin.html', 'newwin');
}
else
{
newwin.focus();
}
}
</script>
在同一页面的正文区域调用弹出窗口:
<a href="#" onClick="popup();">Open Window</a>
【讨论】: