- ベストアンサー
Safariで<iframe>のinnerHTMLを取得する方法
- MacのブラウザSafariで<iframe>タグ内のテキストを取得できません。
- WindowsのIEとMacのFireFoxでは取得できている方法がありますが、Safariではうまくいきません。
- JavaScript初心者なので他に方法があれば教えていただきたいです。
- みんなの回答 (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(レッサーパンダ)ね。
その他の回答 (2)
> <frame></frame>というのを<body>内の<form>よりは外に記述 ん?frame?iframeじゃ ないの? iframeならそれで合ってる筈だよ。 No1で書いたのはframe内のbodyを探してる方法。 ただ検証してないから動くか判らないと言ったわけで・・・後で確認してみるけど、色々試してみて。 後safariでiframeの挙動とかも調べてみたら良いかも
実際にはどちらも正しくない iframe使用の場合は フレームとして探索し、その中でinnerHTMLをかける parent.iframe1.getElementsByTagName("body").innerHTML; 辺りじゃないのかなぁ・・・動かなかったらゴメン。でもヒントにはなるかと
お礼
早速のご回答ありがとうございます。 教えていただいた方法で試してみましたが、undefinedと返されてしまいます。更に色々試してみているのですがまだ解決しません。 う~ん、難しいです。。 ところで、私は<frame></frame>というのを<body>内の<form>よりは外に記述していますが、これは誤っていないのでしょうか?こんな感じ↓ <body> <frame></frame> <form> </form> </body>
お礼
検証までしていただいてありがとうございます。 教えていただいた parent.iframe1.document.getElementsByTagName("body")[0].innerHTML と、テキストをHTML形式に変換することで取得できるようになりました。 テキスト形式だと取得しようとするタイミングでiframeが消えてしまうんですね。なぜだろう。Safari特有ですよね。 疑問は残りますがとても助かりました。 Safariは諦めようかと思っていたので。 どうもありがとうございました。