Javascript Can';t在子窗口中调用父窗口的函数

Javascript Can';t在子窗口中调用父窗口的函数,javascript,jquery,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(){ ... } 我可以访问全

我有一个问题,我不能在子窗口中调用父窗口的函数

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

function createGraph(){
  ...
}
我可以访问全局变量值,但不能调用函数createGraph。 我得到一个错误:

未捕获类型错误:myWindow.createGraph不是函数

我将所有javaScript都移到了头部,但仍然无法工作。

我想您的目标是:

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

例如,在弹出窗口中调用函数,如下所示:

window.opener.createGraph();
编辑:当然,它不会以您一直尝试的方式工作!您需要在打开的子窗口的范围内调用父函数。您所做的是在触发子窗口的同一个函数中调用它们,而不是在子窗口中调用它们

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

function createGraph(){
  ...
}
下面是一个与您的代码相同的黑客方法。记住,这只在铬合金上测试

$("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.";
}

有几件事我无法理解:从父窗口调用myWindow.parent.createGraph;但是createGraph在父级中,所以为什么不直接在父级中调用它呢。此外,您遇到的错误“UncaughtTypeError:myWindow.createGraph不是函数”很奇怪,因为它表明您正在调用“myWindow.createGraph()”而不是myWindow.parent.createGraph()。你能展示一个JSFIDLE吗?
myWindow
是你的子窗口,不是你的父窗口,对吗?试试。@DontVoteMeDown yap这是子窗口。请在、、或其他类似站点上提供演示。