3

abc.html という名前の単純な HTML ページがあります。abc.html には、「クリックしてください」という名前のボタンがあります。このページ abc.html にも、「myframe」という ID を持つ iframe があります。

今私が欲しいのは、「クリックしてください」というボタンをクリックすると、「myframe」という名前のiframe内にアラートボックスが表示されることです。これどうやってするの?

私は次のことを試しました..

window.frames[0].contentWindow.alert("this is the iframe");

しかし、これはうまくいかないようです。これが機能しない理由と、代替ソリューションとなる可能性のあるものを教えてください。

4

4 に答える 4

2

ContentWindow は、ウィンドウではなくドキュメントから派生します。

あなたがしたいことは、アラートを iframe ページの関数に追加し、それを使用document.getElementById('targetFrame').contentWindow.targetFunction();して呼び出すことです (例として targetFunction を使用)。この回答は、テクニックに関する詳細情報を提供する場合があります。

于 2012-08-27T10:13:26.567 に答える
1

ブラウザー レベルalertは、特定のフレームに目に見えて関連付けられていません。呼び出し元のウィンドウ/フレームではなく、常にブラウザ ウィンドウの中央にアラートが表示されます。

これを示すJSFiddle

この機能が必要な場合は、独自のモーダル ダイアログを使用するか、それらを表示するライブラリを使用する必要があります。

于 2012-08-27T13:35:56.823 に答える
1

のソースが<iframe>親ページとは異なるドメインからのものである場合、ブラウザーに同じオリジン ポリシーをヒットすることになります。つまり、そのページでは何もできません。

「代替提案」の場合、それは実際に何を達成しようとしているのか、およびユーザーが何を経験することになっているのかによって異なります。

于 2012-08-27T10:41:01.050 に答える
0

これはあなたに役立つかもしれません:

function body_load()
{       
    document.getElementById('loader').src;
}
<div id='mydiv'>
    <input type="button" value="Click Me" onclick="body_load();" />
</div>
<iframe id='loader' onload="body_load(this)" name="Google"  scrolling="auto" style="width:95%;height:600px" src="http://www.image.com"></iframe>

http://jsbin.com/idazul/1/edit

于 2012-08-27T10:16:24.617 に答える