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

wgeznvg7  于 2023-04-04  发布在  Java
关注(0)|答案(2)|浏览(117)

有问题传递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();

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

6ioyuze2

6ioyuze21#

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

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

// on the child
myFunc();

同样,Chrome和Firefox似乎允许在加载文档之前立即在子窗口上声明变量,因此不需要这种解决方法,但这也同样有效。

t98cgbkg

t98cgbkg2#

我遇到了同样的问题,所以我使用setTimout()函数来修复子窗口中一个未定义的函数error。

相关问题