繁体   English   中英

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

[英]pass javascript function to child window opened with window.open()

在将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();

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

经过数小时的尝试,我最终得到了以下解决方案:

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

// on the child
myFunc();

再次,Chrome和Firefox似乎允许在文档加载之前立即在子窗口上声明变量,因此它们不需要此替代方法,但这也可以正常工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM