プロが教える店舗&オフィスのセキュリティ対策術

WEBページのiframeの中に表示させるHTMLにjQueryのloadメソッドを採用して動的に更新をさせています。
<例>
$("#test").load("ttest/testtest.txt .moji");
こんなような単純なソースです。

これのWEBページを開いた時五分五分の確率で成功したり失敗したりします。
なお、失敗した場合でもIEをリロードすると正常に動くのですが・・・
なぜこのような失敗が起きるのでしょうか?
原因が全くわかりません・・・
詳しい方教えていただけませんでしょうか?

<環境>
Win7
IE8
jQuery1.4.1

A 回答 (3件)

あ、そうなんだ。



iFrameに読み込まれるhtml内部で、さらにhtmlの"#test"に$.loadで外部テキストを読もうとしている、って訳? 早とちり申し訳ない。

なら、そいつはおそらく、$.loadする瞬間に"#test"要素が生成されていないから?
ドキュメントがキャッシュされた後は一発でロードできるというから、おそらく間違いない。

jQuery AjaxのDOM展開完了イベントハンドラ記述、

$(function(){
$("#test").load("ttest/testtest.txt .moji");
});

でも読込みに失敗するのなら、iFrame中のDOM生成イベントを、ブラウザが上手く検知できないことになります。
ならば、setIntervalなどで遅延させる必要があります(それしか対策ないかも)。

そうだとすれば、ブラウザの挙動なんかもからんで、少々やっかいな事象になりますね。
(ブラウザやバージョンごとに遅延タイミングが違うとか)
    • good
    • 0
この回答へのお礼

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

お礼日時:2012/01/09 21:48

想像されるのは#2様の回答かと思いますが、原因をもう少し調べてみてはいかがでしょうか。




例えば、うまく行かない時は、
 $("#test")の取得ができないのか、ajaxがsucsessなのかerrorなのかなど…
 特に、ajaxによるものであれば別の対処があるかも知れません。
 (statusをみればわかるはずです)
    • good
    • 0
この回答へのお礼

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

お礼日時:2012/01/09 21:48

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の要素指定で表示していますよ。というか出来ています。

成功確率が五分五分な所が気に食いません

補足日時:2011/12/21 21:38
    • good
    • 1
この回答へのお礼

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

お礼日時:2012/01/09 21:48

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!