【问题标题】:Opera : how to transmit datas to an IFrame via the Frames ArrayOpera:如何通过 Frames Array 将数据传输到 IFrame
【发布时间】:2013-05-27 14:31:27
【问题描述】:

我的主页可以将参数发送到 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['error'].Update' 不是函数”(主页脚本,即使在我清除了缓存之后)。 ..

这个浏览器有什么问题?

【问题讨论】:

    标签: javascript iframe opera


    【解决方案1】:

    So似乎因为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);
    

    【讨论】:

      猜你喜欢
      • 2014-10-13
      • 1970-01-01
      • 2017-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-03
      • 2019-01-09
      • 1970-01-01
      相关资源
      最近更新 更多