2011-01-28 3 views
2

the demo is here
(彼らは十分な程度にAJAXを許可しないので、jsfiddleでそれを再現することはできません)のInternet Explorer 8を使用すると、ページ上のiframeを持って、iframeの内容

想像を切り捨て

<iframe id="if1" src="/some/url"> </iframe> 

/some/url返す単純なテキスト:<form>text</form><br/>

とiframeがロードされた後も、あなたからその内容にアクセスしますJavascript。

var io = document.getElementById('if1'); 
alert(io.contentWindow.document.body.innerHTML); 

通常のブラウザでは、明らかにそのままコンテンツが返されます。しかし、iframeの上で右クリック/ビュー・ソースが正しい内容を示していますが、インターネットエクスプローラ8返す面白い

text</FORM><BR> 

何かを:<form>text</form><br/>

は、私は他のIEのバージョンを試してみませんでした。

以前にこの問題がありましたか?これは、webappをIEに適応させながら、私が会った問題の非常に単純化されたバージョンです。基本的には、iframe(xhrではなく、ファイルをアップロードする必要があります)を介してajaxリクエストを行い、htmlフラグメントが返されます。
ありがとうございました!

+2

Hmmm。内部フレームに完全で有効な構造体を与えようとしましたか( ' .... ')? –

+0

また、内在する文書と共に 'content-type 'を送信していないことに気付きました。 .htmlが自動的にHTMLとして解釈されるため、違いはありませんが、@ Pekkaの最初の点に同意した –

+0

に沿って送信するのはまだ良いことです。iframeはその内容を完全なHTML文書にすることを期待しています。 – Spudley

答えて

3

応答が働いていた周りbodyを追加し、私はすぐにそれを考えていなかったおかしいです。

また、フロントエンドを変更する必要はありません。document.body.innerHTMLは、bodyタグなし(自然)のコンテンツを返します。

0

あなたはjQueryを使ってそれがより良いかどうか試しましたか?

alert($('#if1').html()); 
+0

iframeの内容を取得するのは '.html()'よりやや難解です –

関連する問題