みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Safariで<iframe>のinnerHTMLを取得する方法

MacのブラウザSafariで
<iframe id="iframe1" src="test.txt" style="display:none" width="1" height="1"></iframe>
で読み込んだtest.txtの内容が取得できなくて困っています。

ちなみにWindowsのIEとMacのFireFoxでは下記のようなかんじで取得できています。
IEの場合
var text = this.iframe1.document.body.innerHTML;
FireFoxの場合
var text = document.getElementById("iframe1").contentDocument.body.innerHTML;

MacのSafariでは上記どちらの方法でも取得できませんでした。
他にも色々調べて試してみたのですがやはり上手くいきません。
<iframe>タグ内のstyle指定をなくしてみたらiframeにテキストの内容は表示されているのであとは取得できればいいのですが。。
JavaScriptは初心者なので記述等不可思議かもしれません。
あわせてご教授いただけたらと思います。

投稿日時 - 2007-03-12 16:27:51

QNo.2826529

困ってます

質問者が選んだベストアンサー

検証結果 (Firefox(win,mac),safari,IE(6-win)) (「iframe1」はフレーム名)

parent.iframe1.document.getElementsByTagName("body")[0].innerHTML

条件
・iframeを記述している側から呼ばなければならない。(iframe内ではself…というかフレーム指定は要らない)
・iframeのsrcはHTMLやXMLでなければならない。(getElementできない)
・iframe(及びframe)は"id"ではなく"name"で名前指定しなければparentで参照できない。(frameの仕様)


あとFireFox(火狐)じゃなくFirefox(レッサーパンダ)ね。

投稿日時 - 2007-03-13 14:43:40

お礼

検証までしていただいてありがとうございます。

教えていただいた
parent.iframe1.document.getElementsByTagName("body")[0].innerHTML
と、テキストをHTML形式に変換することで取得できるようになりました。
テキスト形式だと取得しようとするタイミングでiframeが消えてしまうんですね。なぜだろう。Safari特有ですよね。

疑問は残りますがとても助かりました。
Safariは諦めようかと思っていたので。
どうもありがとうございました。

投稿日時 - 2007-03-14 12:03:34

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

> <frame></frame>というのを<body>内の<form>よりは外に記述
ん?frame?iframeじゃ ないの?
iframeならそれで合ってる筈だよ。

No1で書いたのはframe内のbodyを探してる方法。
ただ検証してないから動くか判らないと言ったわけで・・・後で確認してみるけど、色々試してみて。
後safariでiframeの挙動とかも調べてみたら良いかも

投稿日時 - 2007-03-13 12:38:45

ANo.1

実際にはどちらも正しくない
iframe使用の場合は フレームとして探索し、その中でinnerHTMLをかける

parent.iframe1.getElementsByTagName("body").innerHTML;

辺りじゃないのかなぁ・・・動かなかったらゴメン。でもヒントにはなるかと

投稿日時 - 2007-03-12 17:20:55

お礼

早速のご回答ありがとうございます。
教えていただいた方法で試してみましたが、undefinedと返されてしまいます。更に色々試してみているのですがまだ解決しません。
う~ん、難しいです。。

ところで、私は<frame></frame>というのを<body>内の<form>よりは外に記述していますが、これは誤っていないのでしょうか?こんな感じ↓
<body>
<frame></frame>
<form>
</form>
</body>

投稿日時 - 2007-03-13 10:52:22

あなたにオススメの質問