尝试访问 iframe 中的函数时,我遇到了同样的错误,两个文档都来自同一个域。我访问 iframe 的 window 对象及其功能的技术是这样的:
// if id for the iframe element is 'context', first make sure
// it's accessible as a property of the main window object
if(! window.context ) window.context = window.frames[0] || null;
if( window.context === null ) alert("The Context screen is not available");
// grab a function from the iframe window and assign to var
var fadeLoader = window.context.fadeLoader; // this is an error in IE
...所以在我什至可以尝试调用该函数之前,我得到一个引用它的错误。在 F12 控制台中玩耍,这是有效的:
// grab a function from the iframe window and assign to var
var fadeLoader = window.context.window.fadeLoader;
// now I can call the function
fadeLoader();
...但是现在,我在 Firefox 中遇到错误,因为“窗口”不是 FF 中 iframe 元素的有效属性。相反,FF 使用(正确)contentWindow。因此,要使这项工作全面开展:
if(! window.context ) window.context = window.frames[0] || null;
if(! window.context.window ) window.context.window = window.context.contentWindow;
var fadeLoader = window.context.window.fadeLoader;
fadeLoader();
似乎适用于 IE、FireFox、Chrome 和 Safari。