【发布时间】:2009-08-03 00:16:06
【问题描述】:
有谁知道如何在 Javascript 中关闭所有弹出窗口(通过 javascript 弹出窗口)?
例子:
- 通过单击打开 3 个新窗口 按钮,并使用 window.open() 来 打开所有 3 个新窗口。
- 单击一个按钮并关闭所有 3 弹出窗口聚集在一起。
【问题讨论】:
标签: javascript
有谁知道如何在 Javascript 中关闭所有弹出窗口(通过 javascript 弹出窗口)?
例子:
【问题讨论】:
标签: javascript
var childWindowHandles = new Array();
function openNewWindow(url, params) {
childWindowHandles[childWindowHandles.length] = window.open(url, '', params);
}
function closeChildWindows() {
for (var loop=0; loop<childWindowHandles.length; loop++)
{
if (!childWindowHandles[loop].closed)
{
childWindowHandles[loop].close();
}
}
}
Google 上的第二个结果。将所有窗口存储在数组中后关闭它们。
如果您不喜欢全局变量,这是一种更面向对象的方式。 (我不是 100% 确定它是否有效,只是修改了上面的代码。
popups = new popups();
function popups()
{
this.childs = new array();
this.open = function(url, params)
{
this.child.push(window.open(url, '', params));
}
this.closeAll()
{
for(var loop=0; loop<this.childs.length; loop++)
{
if (!this.childs[loop].closed)
{
this.childs[loop].close();
}
}
}
}
【讨论】:
push。它更干净、更快(通常):this.child.push(window.open(url, '', params);
通过存储它们的句柄来跟踪打开的窗口,然后从按钮的单击处理程序中对窗口句柄使用close() 方法。
就个人而言,我发现在 Web 界面中使用弹出窗口是一个非常烦人的功能。如果您可以通过使用基于 DOM 的对话框来避免它们,请这样做。 jQuery dialog 插件对此非常方便。
【讨论】: