将javascript函数传递给用window.open()打开的子窗口

时间:2014-09-05 23:42:58

标签: javascript function popup

将javascript函数从父窗口传递到子窗口时出现问题。适用于Firefox和Chrome,但不适用于IE(使用IE11测试)。具有讽刺意味的是,如果打开F12开发工具,它甚至可以在IE中工这是在同一个域中,因此跨域块应该不是问题。我尝试过:

// on the parent
var newWin = window.open('href', 'title', ''); 
newWin.myFunc = function() { alert('test'); };

// on the child (when calling this I get error: 'myFunc' is undefined)
myFunc();

我知道我可以反过来 - 调用孩子父母定义的函数:

// on the parent
function myFunc() {
    alert('test');
}

// from child
opener.myFunc();

但是由于超出这些问题范围的原因,我需要能够将匿名函数传递给它必须能够执行的子项。

1 个答案:

答案 0 :(得分:0)

经过几个小时的尝试,我最终得到了这个解决方案:

// on parent
var newWin = window.open('href', 'title', ''); 
$(newWin.document).ready(function() {
    newWin.myFunc = function() {
        alert('test');
    };
});

// on the child
myFunc();

Chrome和Firefox似乎在加载文档之前立即允许在子窗口上进行变量声明,因此不需要这种解决方法,但这也可以正常工作。