-1

IE8 に原因不明のバグがあります。iframe の外側から iframe の内側にある関数を呼び出そうとしています。コードの結果は、「オブジェクトはこのプロパティまたはメソッドをサポートしていません」です。コードは次のとおりです。

<html><head>

<script type="text/javascript">
     setTimeout(function () { 
     document.getElementById('mypage').contentWindow.MyFunction('myVar') }, 10000);

</script>

</head><body>

.....

<iframe id="mypage" src="myfile.php">

<script type="text/javascript">
     function MyFunction(myvar) {
           .....
     }
</script>

</iframe>

.....

</body></html>
4

1 に答える 1

1

あなたのJavaScriptは、ロードされるどころか、iframeが認識される前に実行されます。JavaScript を直接呼び出すのではなく、iframe の load イベントに追加してみてください。また、iframe が dom にロードされたことを確認するために、dom でこれを行う必要があります。

次のようなもの (jQuery で失礼しますが、それは私が知っていることです):

$(document).ready(function(){
    $('#mypage').load(function(){
       document.getElementById('mypage').contentWindow.MyFunction('myVar');
    });
});

最後に、これが必要な場合とそうでない場合があります (何よりもページによって異なります)。スクリプトの読み込みが遅い場合、またはフレームのページ読み込みサイクルの後半に読み込まれる場合は、まだ読み込まれているかどうかをテストするために setInterval が必要になる場合があります。基本的に、関数を作成するJavaScriptが実行された後、関数を呼び出すことを保証する必要があります。

于 2012-04-26T22:08:43.890 に答える