- ベストアンサー
jQueryのloadメソッドが時々反映されません
WEBページのiframeの中に表示させるHTMLにjQueryのloadメソッドを採用して動的に更新をさせています。 <例> $("#test").load("ttest/testtest.txt .moji"); こんなような単純なソースです。 これのWEBページを開いた時五分五分の確率で成功したり失敗したりします。 なお、失敗した場合でもIEをリロードすると正常に動くのですが・・・ なぜこのような失敗が起きるのでしょうか? 原因が全くわかりません・・・ 詳しい方教えていただけませんでしょうか? <環境> Win7 IE8 jQuery1.4.1
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
あ、そうなんだ。。 iFrameに読み込まれるhtml内部で、さらにhtmlの"#test"に$.loadで外部テキストを読もうとしている、って訳? 早とちり申し訳ない。 なら、そいつはおそらく、$.loadする瞬間に"#test"要素が生成されていないから? ドキュメントがキャッシュされた後は一発でロードできるというから、おそらく間違いない。 jQuery AjaxのDOM展開完了イベントハンドラ記述、 $(function(){ $("#test").load("ttest/testtest.txt .moji"); }); でも読込みに失敗するのなら、iFrame中のDOM生成イベントを、ブラウザが上手く検知できないことになります。 ならば、setIntervalなどで遅延させる必要があります(それしか対策ないかも)。 そうだとすれば、ブラウザの挙動なんかもからんで、少々やっかいな事象になりますね。 (ブラウザやバージョンごとに遅延タイミングが違うとか)
その他の回答 (2)
- fujillin
- ベストアンサー率61% (1594/2576)
想像されるのは#2様の回答かと思いますが、原因をもう少し調べてみてはいかがでしょうか。 例えば、うまく行かない時は、 $("#test")の取得ができないのか、ajaxがsucsessなのかerrorなのかなど… 特に、ajaxによるものであれば別の対処があるかも知れません。 (statusをみればわかるはずです)
お礼
ありがとうございました。やってみたところまた問題が出たので再投稿いたします。
- aspnet
- ベストアンサー率79% (72/91)
iFrameオブジェクトに対して$.loadを実行する ??? そういう例は初めて聞きました。 iFrameなら、.srcプロパティに外部htmlパスをセットする→読込まれて表示 (Ajaxは不要) $.loadなら、ターゲットとして<div>などのブロック要素を指定する→読込まれて表示 だと思うのですが。。。
お礼
ありがとうございました。やってみたところまた問題が出たので再投稿いたします。
補足
ちょっと違います。 ※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の要素指定で表示していますよ。というか出来ています。 成功確率が五分五分な所が気に食いません
お礼
ありがとうございました。やってみたところまた問題が出たので再投稿いたします。