选择并聚焦现有窗口

时间:2011-08-24 10:48:54

标签: javascript popup window

我经营一个电子商务网站,当客户提交订单时,我需要让这个弹出窗口正常工作。理想情况下,popop会在订单成功页面加载时出现,但弹出窗口阻止程序会停止此操作。

相反,当用户点击“确认订单”按钮时,我会生成弹出窗口,但这会在订单完成之前模糊结帐重定向到的3DSecure页面。

为了抵消这种情况,我在用户点击“确认订单”时创建弹出窗口,但立即重新聚焦主窗口;如果你愿意,可以选择一个pop-under。我的计划是从订单成功页面重新聚焦这个新窗口。

问题是我无法找到获取现有弹出窗口的对象的方法,因此我可以将焦点放在它上面。如果我使用window.open(url,windowName,options)创建窗口,有没有办法可以从另一个页面引用它? window.load(windowName)的某些内容是理想的。

2 个答案:

答案 0 :(得分:4)

window.open的签名是这样的。

var windowObjectReference = window.open(strUrl, strWindowName[, strWindowFeatures]);

MDN指出,

  

如果名称 strWindowName 的窗口已存在,则 strUrl 为   加载到现有窗口中。在这种情况下的返回值   method是现有窗口,忽略 strWindowFeatures 。   为 strUrl 提供空字符串是获取对引用的方法   在不改变窗口位置的情况下,按名称打开窗口。

所以这对你有用。

window.open('', 'windowName', '');

根据MDN,每当打开一个窗口时,都会创建一个对它的引用,

var windowObjectReference = window.open("http://www.google.com", "popup", "width=500,height=500");

您始终可以使用该引用加载它,例如

if(windowObjectReference != null || !windowObjectReference.closed) {
    windowObjectReference .focus();
}

<击>

答案 1 :(得分:1)

这很棘手,但这适用于Chrome。首先,打开窗口:

window.open('/test', 'testw', '');

另一个链接(甚至在另一个页面上)通过传递相同的窗口名称在同一窗口中打开“页面”。 URL是JavaScript(所以它更像是一个黑客):

window.open('javascript:void window.focus()', 'testw', '');

http://jsfiddle.net/pimvdb/KeHtp/