javascript函数的更改未反映在浏览器中

时间:2016-10-27 20:01:39

标签: javascript drupal-webform

我很难关闭弹出窗口。 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();
}

2 个答案:

答案 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() }
}