• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Safariで<iframe>のinnerHTMLを取得する方法)

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

このQ&Aのポイント
  • MacのブラウザSafariで<iframe>タグ内のテキストを取得できません。
  • WindowsのIEとMacのFireFoxでは取得できている方法がありますが、Safariではうまくいきません。
  • JavaScript初心者なので他に方法があれば教えていただきたいです。

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

  • ベストアンサー
noname#39970
noname#39970
回答No.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(レッサーパンダ)ね。

c4ycaant
質問者

お礼

検証までしていただいてありがとうございます。 教えていただいた parent.iframe1.document.getElementsByTagName("body")[0].innerHTML と、テキストをHTML形式に変換することで取得できるようになりました。 テキスト形式だと取得しようとするタイミングでiframeが消えてしまうんですね。なぜだろう。Safari特有ですよね。 疑問は残りますがとても助かりました。 Safariは諦めようかと思っていたので。 どうもありがとうございました。

その他の回答 (2)

noname#39970
noname#39970
回答No.2

> <frame></frame>というのを<body>内の<form>よりは外に記述 ん?frame?iframeじゃ ないの? iframeならそれで合ってる筈だよ。 No1で書いたのはframe内のbodyを探してる方法。 ただ検証してないから動くか判らないと言ったわけで・・・後で確認してみるけど、色々試してみて。 後safariでiframeの挙動とかも調べてみたら良いかも

noname#39970
noname#39970
回答No.1

実際にはどちらも正しくない iframe使用の場合は フレームとして探索し、その中でinnerHTMLをかける parent.iframe1.getElementsByTagName("body").innerHTML; 辺りじゃないのかなぁ・・・動かなかったらゴメン。でもヒントにはなるかと

c4ycaant
質問者

お礼

早速のご回答ありがとうございます。 教えていただいた方法で試してみましたが、undefinedと返されてしまいます。更に色々試してみているのですがまだ解決しません。 う~ん、難しいです。。 ところで、私は<frame></frame>というのを<body>内の<form>よりは外に記述していますが、これは誤っていないのでしょうか?こんな感じ↓ <body> <frame></frame> <form> </form> </body>

関連するQ&A