我很难关闭弹出窗口。 window.close();
仅适用于 Chrome 而非 IE 。在做了一些研究之后,我发现this article告诉我为什么我不应该直接在弹出窗口中使用window.close()
来关闭它。
//Global var to store a reference to the opened window
var openedWindow;
function openWindow() {
openedWindow = window.open('moreinfo.htm');
}
function closeOpenedWindow() {
openedWindow.close();
}
function myReload() {
location.reload();
}
问题是我第一次编写closeOpenWindow方法时,忘记将()
放在最后,所以它是openedWindow.close;
我已经修复了问题,但我仍然在该行上遇到同样的错误。
openedWindow.close is not a function
如果删除整个函数closeOpenedWindow()
,我会得到closeOpenedWindow()不是函数的错误。当我把它放回去时,我得到了openedWindow.close is not a function.
感谢您的帮助
这就是我从popupu调用该函数的方法:
function mycloseChild() {
window.opener.myReload();
window.opener.closeOpenedWindow();
}
答案 0 :(得分:0)
实际上,这似乎适用于Chrome调试器。也许是时间问题?
//Global var to store a reference to the opened window
var openedWindow;
function openWindow() {
openedWindow = window.open('moreinfo.htm');
}
function closeOpenedWindow() {
openedWindow.close();
}
openWindow();
//openedWindow is new window
closeOpenedWindow();
//openedWindow closes
看起来您可以使用opensWindow中的window.opener
来获取对具有方法closeOpenedWindow
的原始窗口对象的引用。但为了使其工作,您需要将closeOpenedWindow
添加到原始窗口,如此
window['closeOpenedWindow'] = function() {
openedWindow.close();
}
然后从打开的窗口调用它,如window.opener.closeOpenedWindow()
另见Can I pass a JavaScript variable to another browser window?
答案 1 :(得分:0)
var openedWindow = {
open: () => { window.open('moreinfo.htm') },
close: () => { window.close() }
}