具体的には、jQuery1.6.4を使用して、a.html内にあるiframe(id=hoge)のsrcを変化させた[$("#hoge").attr("src", "test.html");]場合、そのhogeの中の表示が終わる(イメージ等遅延読込も含めて)タイミングで、何かしたい場合です。
onLoad・onreadystatechangeイベントに無名関数登録でも、isReady監視でもできませんでした。環境は、windows xp/ie7 or firefox6.0.2です。
ちなみにjQueryでなくjavascriptだけで書けるのであれば、それでも構いません。
よろしくお願いします。
jsFiddle で、ちょろっと書いてみましたが、iframe の load で関数を登録する、
というのでは駄目なのでしょうか?
# FF5.0 で確認
iframeは同一ドメインでしょうか?
iframeを編集できますか?
編集できるのであればiframe側で適当なタイミング(imgのonload等)に適当なイベントをtrigger()で発行して親フレームでそれをキャッチすればいいのではないでしょうか。
参考:
>ちなみに、IEは8でした。
これって、IE8 で、ぼくが jsFiddle に置いたコードは正しく動くってことですよね。
「私の環境」に、jsFiddle に書いたコードを置いても、正しく動かない、ってことでしょうか?
おっしゃる通りです。
私の環境というのは、語弊がありました。
IE8でもFirefoxでも、jsFiddleではOKで、私のページにそれを組み込んだものはNGでした。
組み込み方の問題なのか、jQuery1.6.4でやるのが間違えているのか、模索しています。
一番きれいな書き方ですから、いけるはずなんですけど・・。
DOCTYPE とか、バッサリ削ってるので、互換モードとかが関係するのかな...
<html>
<body>
<script src="jquery-1.6.4.js"></script>
... jsFiddle に書いたコード
</body>
</html>
なにがどうなったからNGなのかわからないとなんとも…
その、難しい要望です。
DOMを操作できるようになるまでではなく、イメージ等、遅れて表示されるものもすべて読み込んでから、ということです。
iframe内に表示する内容は、<BODY>タグにonLoadイベントが書かれているものです。
ちょっと試してみます。今日は時間切れなので、明日にでも報告します
編集することができるなら回答1にあるtriggerでいけると思います。
変化球な方法。
編集がダメなら、iframe内にある一番時間がかかりそうな画像を親フレームでも読み込んで、そのonloadしたタイミングをiframeの読み込み完了として処理するとか。
こちらでも動作確認とれました!
他の参考になりそうなページを色々試していたため、純粋なコードではなくなってしまっていたのが原因かな? と思われます。
ありがとうございました。