電子書籍の厳選無料作品が豊富!

JavaScript で、自身の HTML コンテンツをいじっています。
HTML コンテンツの中に iframe 要素を子孫に持つノードが有り (iframe 要素そのものでも可)、これを HTML オブジェクトツリーの別位置に移そうと removeChild, appendChild をすると、Firefox の場合、その iframe 要素の src 属性をリロードしてしまいます。
これを、リロードせずに移す方法はないでしょうか? Firefox 特有の操作でもかまいません。お願いいたします。

A 回答 (3件)

iframeで読み込むHTMLドキュメントに


Last-ModifiedとExpiresヘッダを付けてキャッシュを読ませるようにするのはどうでしょうか。
HTTPヘッダの追加が出来なければ<meta>で代用できるかもしれません。
    • good
    • 0
この回答へのお礼

フォローありがとうございます。
キャッシュもやってみたのですが、HTTP 通信レベルでの request, response は無くなるのですが、iframe に突っ込んだ側で onload がコールされてしまいます。

お礼日時:2009/10/08 11:41

#1です。



なかなか手ごわいですねぇ。
思いつきだけなので、参考になるかどうか…

□cloneを作成して先にappend、後からremove。
 (画像と違うのでリロードしちゃうかも)

□移動する位置が決まっているなら
 最初から目的の位置にもiframeを作成して、表示/非表示で切り替える

□iframeを移動させずに、残りの要素を移動して同じレイアウトにする
 (かなり強引かも)

□表示レイアウトでの変更が目的なら
 要素を移動するのではなく、CSSで対応する方法がないか検討する

ぐらいしか、思いつきません。
後は、他の方のお知恵にすがることにします。
    • good
    • 0
この回答へのお礼

フォローありがとうございます。
cloneNode をやっても同様です。
で、これは表示位置を移動したいのではなく、あくまでも HTML の DOM ツリーの位置を移動したいのです。

お礼日時:2009/10/08 11:43

Firefoxが手元にないので確認できませんが、



一旦removeすると無いものとみなされて、新たに追加したときに読みにいくのではないかと推測しました。
要素をremoveしないで、直接appendすることでも移動できると思いますが、それではうまくいかないでしょうか?
    • good
    • 0
この回答へのお礼

removeChild せずに appendChild をコールした場合、元の位置から自動的に消えて、新しい位置に移りますが、やはりリロードが発生します。replaceChild や insertBefore も同じです。

お礼日時:2009/10/07 13:15

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