• ベストアンサー

jQueryのloadメソッドが時々反映されません

WEBページのiframeの中に表示させるHTMLにjQueryのloadメソッドを採用して動的に更新をさせています。 <例> $("#test").load("ttest/testtest.txt .moji"); こんなような単純なソースです。 これのWEBページを開いた時五分五分の確率で成功したり失敗したりします。 なお、失敗した場合でもIEをリロードすると正常に動くのですが・・・ なぜこのような失敗が起きるのでしょうか? 原因が全くわかりません・・・ 詳しい方教えていただけませんでしょうか? <環境> Win7 IE8 jQuery1.4.1

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

  • ベストアンサー
  • aspnet
  • ベストアンサー率79% (72/91)
回答No.2

あ、そうなんだ。。 iFrameに読み込まれるhtml内部で、さらにhtmlの"#test"に$.loadで外部テキストを読もうとしている、って訳? 早とちり申し訳ない。 なら、そいつはおそらく、$.loadする瞬間に"#test"要素が生成されていないから? ドキュメントがキャッシュされた後は一発でロードできるというから、おそらく間違いない。 jQuery AjaxのDOM展開完了イベントハンドラ記述、 $(function(){ $("#test").load("ttest/testtest.txt .moji"); }); でも読込みに失敗するのなら、iFrame中のDOM生成イベントを、ブラウザが上手く検知できないことになります。 ならば、setIntervalなどで遅延させる必要があります(それしか対策ないかも)。 そうだとすれば、ブラウザの挙動なんかもからんで、少々やっかいな事象になりますね。 (ブラウザやバージョンごとに遅延タイミングが違うとか)

mr-r00
質問者

お礼

ありがとうございました。やってみたところまた問題が出たので再投稿いたします。

その他の回答 (2)

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.3

想像されるのは#2様の回答かと思いますが、原因をもう少し調べてみてはいかがでしょうか。 例えば、うまく行かない時は、  $("#test")の取得ができないのか、ajaxがsucsessなのかerrorなのかなど…  特に、ajaxによるものであれば別の対処があるかも知れません。  (statusをみればわかるはずです)

mr-r00
質問者

お礼

ありがとうございました。やってみたところまた問題が出たので再投稿いたします。

  • aspnet
  • ベストアンサー率79% (72/91)
回答No.1

iFrameオブジェクトに対して$.loadを実行する ??? そういう例は初めて聞きました。 iFrameなら、.srcプロパティに外部htmlパスをセットする→読込まれて表示 (Ajaxは不要) $.loadなら、ターゲットとして<div>などのブロック要素を指定する→読込まれて表示 だと思うのですが。。。

mr-r00
質問者

お礼

ありがとうございました。やってみたところまた問題が出たので再投稿いたします。

mr-r00
質問者

補足

ちょっと違います。 ※WEBページ <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>無題 1</title> </head> <body> <iframe src="default.htm"></iframe> </body> </html> この中にあるdefault.htmに$("#test").load("ttest/testtest.txt .moji");といったソースがあります。 もちろんdivの要素指定で表示していますよ。というか出来ています。 成功確率が五分五分な所が気に食いません

関連するQ&A

専門家に質問してみよう