128


51

テスト

私が欲しいのは:

テスト

8 Answer


132


正確な質問は、jQueryではなく純粋なJavaScriptでそれを行う方法です。

しかし、私はいつもjQueryのソースコードにある解決策を使います。 ネイティブJavaScriptのほんの1行です。

私にとっては、iframeの内容を取得するための最善の方法、読みやすくそして最短の方法でさえあります。

まずiframeを入手してください

var iframe = document.getElementById('id_description_iframe');

// or
var iframe = document.querySelector('#id_description_iframe');

それからjQueryのソリューションを使う

var iframeDocument = iframe.contentDocument || iframe.contentWindow.document;

_ `+ iframe `オブジェクトの ` contentWindow `プロパティの間にこのトリックを行うInternet Explorerでも動作します。 他のほとんどのブラウザは ` contentDocument `プロパティを使用します。これが、このOR条件でこのプロパティを最初に証明する理由です。 設定されていない場合は、 ` contentWindow.document +`を試してください。 _

  • iframe内の要素を選択してください*

それから、通常、 `+ getElementById()`または ` querySelectorAll()`を使用して、 ` iframeDocument +`からDOM要素を選択できます。

if (!iframeDocument) {
    throw "iframe couldn't be found in DOM.";
}

var iframeContent = iframeDocument.getElementById('frameBody');

// or
var iframeContent = iframeDocument.querySelectorAll('#frameBody');
  • iframeの中で関数を呼び出す*

+ iframe +`から `+ window +`要素だけを取得して、いくつかのグローバル関数、変数、またはライブラリ全体を呼び出します(例: `+ jQuery +):

var iframeWindow = iframe.contentWindow;

// you can even call jQuery or other frameworks
// if it is loaded inside the iframe
iframeContent = iframeWindow.jQuery('#frameBody');

// or
iframeContent = iframeWindow.$('#frameBody');

// or even use any other global variable
iframeWindow.myVar = window.myVar;

// or call a global function
var myVar = iframeWindow.myFunction(param1 /*, ... */);

注意

same-originポリシーを守れば、これがすべて可能です。


66


JQueryを使って、これを試してください。

$( "#id_description_iframe")。contents()。find( "body")。html()


30


それは私のために完璧に動作します。

document.getElementById( 'iframe_id')。contentWindow.document.body.innerHTML;


23


私の知る限り、Iframeはそのようには使えません。 そのsrc属性を別のページにポイントする必要があります。

これは、プレーン古いJavaScriptを使用して本体のコンテンツを取得する方法です。 これはIEとFirefoxの両方で動作します。

function getFrameContents(){var iFrame = document.getElementById( 'id_description_iframe'); var iFrameBody; if(iFrame.contentDocument){// FF iFrameBody = iFrame.contentDocument.getElementsByTagName( 'body')[0];そうでなければ(iFrame.contentWindow){// IE iFrameBody = iFrame.contentWindow.document.getElementsByTagName( 'body')[0]; alert(iFrameBody.innerHTML); }


10


JSを使用してiframeで `+ content`を使用します。

document.getElementById('id_iframe').contentWindow.document.write('content');


4


タグの間にテキストを配置することは、iframeを処理できないブラウザ用に予約されていると思います。

お使いのブラウザはインラインフレームをサポートしていません

iframeのHTMLソースを設定するには、 'src’属性を使用します。

*:)*に役立つことを願っています


4


次のコードはクロスブラウザに準拠しています。 IE7、IE8、Fx 3、Safari、Chromeで動作するので、ブラウザ間の問題を処理する必要はありません。 IE6でテストしませんでした。

...

var iframeDoc; if(window.frames


2


Chalkeyは正しいです、あなたはiframeに含まれるべきページを指定するためにsrc属性を使う必要があります。 これを行い、iframe内の文書が親文書と同じドメインにあるという条件で、これを使用できます。

var e = document.getElementById( "id_description_iframe"); if(e!= null){alert(e.contentWindow.document.body.innerHTML); }

明らかに、アラートを送信するだけでなく、コンテンツに対して何か便利なことを実行できます。