iFrame jQueryで要素を選択する


122

このアプリケーションでは、Webページを解析して、iFrameの別のページに読み込みます。ロードされたページのすべての要素には、tokenid-sがあります。これらのtokenid-sによって要素を選択する必要があります。意味-メインページの要素をクリックし、iFrameのページで対応する要素を選択します。jQueryの助けを借りて、次のようにしています。

function selectElement(token) {
     $('[tokenid=' + token + ']').addClass('border'); 
}

ただし、この関数では、iFrameではなく、現在のページの要素のみを選択できます。読み込まれたiFrameの要素を選択するにはどうすればよいですか?

ありがとう。

回答:


157
var iframe = $('iframe'); // or some other selector to get the iframe
$('[tokenid=' + token + ']', iframe.contents()).addClass('border');

またsrc、セキュリティ上の理由により、このiframeのが別のドメインを指している場合は、JavaScriptでこのiframeのコンテンツにアクセスできません。


8
$( 'iframe')は直接iframeを返さないことに注意してください。アレイから引き出す必要があります。
マッケイラ

喜んで助けてくれてありがとう。しかし、これはうまくいかないようです。
cycero

3
@cycero、動作するはずです。このiframeを動的に生成していますか?セキュリティ上の理由により、このiframeのsrc要素を自分以外のドメインにポイントすると、そのコンテンツにアクセスできないことを忘れないでください。
Darin Dimitrov

別のドメインからではなく、同じフォルダから読み込みます。iFrameのコンテンツは動的に生成され、サーバー上のファイルとして保存されます。次に、そのファイルがiFrameに読み込まれます。
cycero 2011

@cycero、私は私の答えを更新しました。合格してみてくださいiframe.contents()
ダリンディミトロフ2011年

52

この投稿をご覧くださいhttp : //praveenbattula.blogspot.com/2009/09/access-iframe-content-using-jquery.html

$("#iframeID").contents().find("[tokenid=" + token + "]").html();

セレクタをfindメソッドに配置します。

ただし、iframeがサーバーから送信されていない場合は、これができない場合があります。他の投稿では、アクセス拒否エラーについて説明しています。

jQuery / JavaScript:iframeのコンテンツへのアクセス


これは要素のHTMLを取得するという点では機能しますが、選択した要素にCSSクラスを追加するにはどうすればよいですか?$( "#iframeDiv")。contents()。find( "[tokenid =" + token + "]")。addClass( "border"); 動作していないようです。
cycero 2011

1
権限拒否エラーが発生しますか?iframeのhtmlを教えてもらえますか?
Kevin Bowersox

いいえ、問題を否定する許可はありません。
cycero

20

ドキュメントの準備ができても、iframeも準備ができているわけではない
ので、iframeロードイベントをリッスンしてからコンテンツにアクセスする必要があります。

$(function() {
    $("#my-iframe").bind("load",function(){
        $(this).contents().find("[tokenid=" + token + "]").html();
    });
});

-3

ケースがコンソールを介してIFrameにアクセスしている場合(例:Chrome Dev Tools)、ドロップダウンを介してDOMリクエストのコンテキストを選択できます(図を参照)。

Chrome Dev Tools-iFrameの選択


-9

これは、divをコンテナのみでドラッグ可能にするためにこれを行う単純なJQueryです。

$("#containerdiv div").draggable( {containment: "#containerdiv ", scroll: false} );
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.