Javascriptで教えてください。


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

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

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

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2011/11/27 02:11:53
  • 終了:2011/12/04 02:15:03

回答(3件)

id:a-kuma3 No.2

a-kuma3回答回数4363ベストアンサー獲得回数18002011/11/27 10:58:52

ポイント100pt

こんな感じ?
■親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 を使います。

id:kodairabase No.3

kodairabase回答回数661ベストアンサー獲得回数802011/12/03 15:28:49

ポイント100pt

できません。

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません