2

IFrame のページ上のボタンの「クリック」イベントにイベント リスナーをアタッチしようとしています。iframe 内のページは、親ウィンドウと同じドメインに属しています。

window.frames["iframe_Id"].document.getElementById("button_id").addEventListener("click",functionToRun,false);

上記のサンプルは私にとってはうまくいきません。実際のコードでは構文エラーである可能性がありますが、これが一般的な考えかどうかを確認したかったのです。

注:クリック イベントを Iframe 全体に追加する例はたくさんありますが、Iframe 内のボタンでも同じように機能するかどうかはわかりません。

4

4 に答える 4

7

jQueryの使用:

$("#iframe_Id").contents("#button_id").click(functionToRun);

またはjQueryなし:

document.getElementById("iframe_Id").contentWindow.document.getElementById("button_id").addEventListener("click", functionToRun, false);

これは、iframeが同一生成元ポリシーを満たしている場合にのみ機能します。

于 2012-11-03T23:31:00.877 に答える
0

window.framesは配列のようなオブジェクトであるため、その要素にはインデックスでのみアクセスできます。

それらをループして、それらのIDを確認する必要があります。例:

var frame; for(i = 0; i < frames.length; i++) {
    frame = frames[i];
    if (frame.id === 'iframe_id') {
         frame.document
              .getElementById("button_id")
              .addEventListener("click",functionToRun,false);
    }
}
于 2012-11-03T23:32:18.717 に答える
0
window.frames["iframe_Id"].contentWindow.document.getElementById("button_id").addEventListener("click",functionToRun,false);

                              ^

contentWindowプロパティ

DOM の iframe 要素から、スクリプトは contentWindow プロパティを介して、含まれている HTML ページの window オブジェクトにアクセスできます。

于 2012-11-03T23:37:43.167 に答える
0

「キャプチャ」フェーズと「バブリング」フェーズでイベントを実行してみましたか?

document.getElementById("iframe_Id")
 .document.addEventListener("click", functionToRun, true);

trueの代わりにfalse最後のパラメーターとして注意してください。

于 2012-11-03T23:40:03.770 に答える