![](/img/trans.png)
[英]Modifying the window opened by javascript's “window.open()” function
[英]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.