Opera:如何通过Frames Array将数据传输到IFrame

时间:2013-05-27 14:31:28

标签: javascript iframe opera

我的主页可以将参数发送到IFrame并显示它。我使用this page中描述为'Frames Array'的简单(和跨浏览器)方法。

然而,它在FF,Chrome,IE和Safari中工作正常,但在Opera中却没有。

IFrame电话:

var iframe = document.createElement('iframe');
iframe.src = 'Layout.error.htm';
iframe.name = 'error';
iframe.id = 'error'; // this is necessary for IE
iframe.style.cssText = "height: 150px; width: 300px";

document.body.appendChild(iframe);

window.frames['error'].data = 'xx';

进入IFrame体内:

<script>
    alert(data);            
</script>

Opera说“未处理的错误:未定义的变量:数据”(IFrame脚本)......

可以在触发IFrame脚本后发送数据,因此我尝试添加“更新”功能:

window.frames['error'].data = 'xx';
window.frames['error'].Update();
_____
<script>            
    function Update ()
    {
        alert ('data');
    }
</script>

但它没有“看到”该函数:“未处理的错误:'window.frames ['错误']。更新'不是一个函数”(主页脚本,即使在我清除了缓存之后)。 ..

此浏览器有什么问题?

1 个答案:

答案 0 :(得分:0)

So似乎因为Opera 12,iFrame必须在完全加载后从父页面进行控制。这可以通过回调完成:

<!-- callback into the iframe-->
<script type="text/javascript"> window.top.window.callback(); </script>

父母:

function callback() {
    var iframe = window.frames['name'];
    var innerDoc = iframe.document;
    // handle the content ..
}
var iframe = document.createElement('iframe');
iframe.src = ...;
iframe.name = 'name';
iframe.id = 'name';
document.body.appendChild(iframe);