人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Javascriptで教えてください。

親Aのインラインフレームで子Bを表示しインラインフレーム内で子Cに移動するとします。

子CのHTMLの中に、#BBBと言うIDが有るのですがその要素はdivなのかh1なのかpなのかは解らないとします。
子Cのボタンをクリックイベントとし、要素名をアラートする。

ID:#BBBの要素を親Aに記述するJavascriptで取得することは可能でしょうか。
そのコードを教えてください。

●質問者: akide
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● Cherenkov
●100ポイント

こうですか?
https://gist.github.com/1396045



本当はiframeが読み込み完了するまで待つ処理を入れたほうがよさそう。
JavaScriptの動かないコード (中級編) iframe内にDOMアクセスできないエラー - 主に言語とシステム開発に関して


2 ● a-kuma3
●100ポイント

こんな感じ?
■親A

<html>
<script>
function bind_display_bbb() {

 // iframe を表す window オブジェクト
 var f = frames[0];

 // iframe の document から、ボタンの要素を取得
 var btn = f.document.getElementById("btn");

 // iframe 内のボタンに、onclick イベントを登録する
 if (btn) {
 btn.onclick = function () {
 // 要素 BBB を取得
 var bbb = f.document.getElementById("BBB");

 // BBB の TAG NAME を alert()
 alert(bbb.tagName);
 };
 }
}

window.onload = function() {
 if (document.all) {
 // IE の場合
 document.getElementById("f").onreadystatechange = bind_display_bbb;
 } else {
 // Firefox の場合
 document.getElementById("f").onload = bind_display_bbb;
 }
 };
</script>
<body>
<iframe src="b.html" id="f"></iframe>
</body>
</html>

■子B

<html>
<body>
<a href="c.html">display c</a>
</body>
</html>

■子C

<html>
<body>
<h1 id="BBB">I'm BBB</h1>
<button id="btn">click me</button>
</body>
</html>

子C のページのドメインは、親A と同じドメインであることが必要です。
iframe の onload でフレーム内のページからボタンを探して、onclick イベントを登録します。
イベントとして登録する関数は、親のコードなので、子C の要素に登録するとしても、
document.getElementById("BBB") では、#BBB を取得することができません。

iframe の onload でいけると思ったんですが、IE ではイベントが発火しませんでした。
IE の場合 (判定は手抜きです) には、iframe の onreadystatechange を使います。


3 ● kodairabase
●100ポイント

できません。

関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ