0

我的主页可以将参数发送到 IFrame 并显示它。我在此页面中使用了一种简单(和跨浏览器)描述为“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['error'].Update' 不是函数”(主页脚本,即使在我清除了缓存之后)......

这个浏览器有什么问题?

4

1 回答 1

0

因此,似乎由于 Opera12,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);
于 2013-06-01T00:31:56.570 回答