• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:appendChildがieだとできない??)

appendChildがieだとできない??

このQ&Aのポイント
  • DOM操作のappendChildで問題が発生しています。
  • Google Chromeでは正常に動作するが、Internet Explorerではエラーが発生します。
  • フレーム内にアクセスすることができない原因について教えてください。

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

  • ベストアンサー
  • think49
  • ベストアンサー率59% (285/482)
回答No.5

#4への補足。 IE7では var idoc = b.contentWindow.document; が通りますね。 IE6は検証していませんが、もし大丈夫ならスマートに書けるのでこの方が良いと思います。

kura07
質問者

お礼

いろいろとありがとうございます! 試したところ、めでたくieでも動きました。 また困ったことがあったら、お願いします。

その他の回答 (4)

  • think49
  • ベストアンサー率59% (285/482)
回答No.4

#1,2,3です。 いろいろと勘違いしていまして、#3はIEでは動きません。 当方の確認不足でした。申し訳ありません。 下記コードは http://www.bit-hive.com/~tomita/JS/IframeAppend/ を参考にして、IE7,Firefox3で動作確認しました。 <iframe id='B' src='B.html'></iframe> <script type='text/javascript'> (function(){ var iframeId = 'B'; var b = document.getElementById(iframeId); b.onload = function(){ var idoc; if (document.all) { // IEなら idoc = frames[iframeId].document; } else { idoc = b.contentDocument; } var div = idoc.createElement("div"); div.appendChild(idoc.createTextNode('It is a test.')); idoc.body.appendChild(div); } })(); </script>

  • think49
  • ベストアンサー率59% (285/482)
回答No.3

#1,2です。 すみません、#2 は質問の意を取り違えていました。 appendChildするのはiframe内なのですね。 下記コードでOKだと思います。(確認済み) <iframe id='B' src='B.html'></iframe> <script type='text/javascript'> (function(){ var b = document.getElementById('B'); b.onload = function(){ var body = this.contentDocument.getElementsByTagName("body")[0]; var div = document.createElement("div"); div.appendChild(document.createTextNode('It is a test!')); body.appendChild(div); } })(); </script>

  • think49
  • ベストアンサー率59% (285/482)
回答No.2

簡易HTMLを作って検証して、下記コードで期待通りの動作を得られました。 <iframe id='B' src='B.html' style='display:none;'></iframe> <script type='text/javascript'> (function(){ var b = document.getElementById('B'); b.onload = function(){ var body = this.contentDocument.getElementsByTagName("body")[0]; document.body.appendChild(body); } })(); </script> iframeが読み込まれない内にbodyを読み込もうとして失敗しているのかもしれません。 ベースに下記Q&Aのコードがあったので、そこから借用。(自分のコードですが) window.onload ではなく、iframe.onload を使ったところだけ違います。 別画面の関数の呼び出し -OKWave http://okwave.jp/qa4988613.html?ans_count_asc=1

  • think49
  • ベストアンサー率59% (285/482)
回答No.1

もうちょっと現象を再現できる情報が欲しいですね…。 - '$("hoge")...' を回答者側で実行可能なように(ライブラリの開示、もしくはライブラリ依存をなくしたコードに修正) - HTMLの掲示 はできないでしょうか?

関連するQ&A

専門家に質問してみよう