在子窗口中不能调用父窗口的功能
问题描述:
我有在子窗口中无法调用父窗口功能的问题。在子窗口中不能调用父窗口的功能
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 is not a function
我感动所有的JavaScript头,但仍然没有工作。
答
我认为你是后:
window.opener
: Returns a reference to the window that opened this current window
因此,例如,您的弹出窗口内,你打电话给你之类的函数:
window.opener.createGraph();
编辑:中当然,它不会与你一直在尝试的方式一起工作!您需要在打开的子窗口范围内调用父功能。你正在做的是在触发子窗口和子窗口内的相同功能中调用它们。
沿着代码的相同路线,这是一种拙劣的方式。请记住,这仅在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.";
}
+0
我试过这个,不行,我也试过window.top –
有几件事情我无法理解:您所呼叫myWindow.parent.createGraph父窗口;但createGraph在父类中,所以为什么不直接在父类中调用它。此外,你有“Uncaught TypeError:myWindow.createGraph不是函数”的错误很奇怪,因为它接近你调用“myWindow.createGraph()”而不是myWindow.parent.createGraph()。你可以展示一个jsfiddle吗? – pinturic
'myWindow'是你的孩子*窗口,而不是你的父母,对吧?试试[this](http://stackoverflow.com/q/1777864/1267304)。 – DontVoteMeDown
@DontVoteMeDown yap它是子窗口 –