不能在子窗口中调用父窗口的函数

Can't call function of parent window in child window

本文关键字:窗口 函数 调用 不能      更新时间:2023-09-26

我无法在子窗口中调用父窗口的函数

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

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

Uncaught TypeError: myWindow。createGraph不是函数

我移动了所有的javaScript在头部,但仍然不能工作。

我想你是在:

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

例如,在你的弹出窗口中,你可以这样调用你的函数:
window.opener.createGraph();

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

下面是一种简单的方法,沿着相同的代码行。请记住,这只在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.";
}

演示