无法在子窗口中调用父窗口的功能

时间:2015-07-21 12:38:27

标签: javascript jquery

我有问题,我无法在子窗口中调用父窗口的功能。

var value = "test";
function drawChart() {
    myWindow = window.open("", "Chart", "width=500, height=500");
    myWindow.console.log(parent.value);
    myWindow.parent.createGraph();
}

function createGraph(){
  ...
}

我可以访问全局变量值,但不能调用函数createGraph。 我收到了错误:

  

未捕获的TypeError:myWindow.createGraph不是函数

我把所有javaScript都移到了头上,但仍然没有工作。

1 个答案:

答案 0 :(得分:1)

我想你是在追求:

  

window.opener:返回对打开当前窗口的窗口的引用

因此,例如,弹出窗口中的 ,您可以调用您的函数:

window.opener.createGraph();

编辑:当然,它不适用于您尝试过的方式!您需要在打开的子窗口的范围内调用父函数。你正在做的是在触发子窗口的同一个函数中调用它们,并在子窗口中调用 NOT

这是一种沿着代码相同方向的hacky方式。请记住,这仅在Chrome上进行了测试。

$("button").on("click", function() {
    var win = window.open("", "Chart", "width=400,height=400");
    win.console.log("New window");
    win.callFunc = function(fn) {
        win.console.log(fn());
    }
    win.callFunc(aParentFunction);   
});

function aParentFunction() {
    return "Hiya, I am your dad.";
}

A Demo