14歳の自分に衝撃の事実を告げてください

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は初心者なので記述等不可思議かもしれません。
あわせてご教授いただけたらと思います。

A 回答 (3件)

検証結果 (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(レッサーパンダ)ね。
    • good
    • 0
この回答へのお礼

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

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

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

お礼日時:2007/03/14 12:03

> <frame></frame>というのを<body>内の<form>よりは外に記述


ん?frame?iframeじゃ ないの?
iframeならそれで合ってる筈だよ。

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

実際にはどちらも正しくない


iframe使用の場合は フレームとして探索し、その中でinnerHTMLをかける

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

辺りじゃないのかなぁ・・・動かなかったらゴメン。でもヒントにはなるかと
    • good
    • 0
この回答へのお礼

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

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

お礼日時:2007/03/13 10:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報