我的主页可以将参数发送到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 ['错误']。更新'不是一个函数”(主页脚本,即使在我清除了缓存之后)。 ..
此浏览器有什么问题?
答案 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);