0

私のメイン ページは、パラメータを IFrame に送信して表示できます。このページで「フレーム配列」として説明されている単純な (そしてクロス ブラウザの) メソッドを使用します。

ただし、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 に答える