2011-08-05 4 views
2

アンカータグで囲まれた画像タグを保持するJavaScript変数があります。かなり普通のもの。 Firefoxで何が起こるFirefoxは自動的にHTML要素をあらかじめ読み込んでいますか?

myvar="<a href='foo'><img src='bar'></a>"; 

は、私がいないはそのMYVAR変数の内容をdocument.writeをすることを選択していたとしても、私はそれにもかかわらず、IMGタグで参照される画像は、実際にロードされるんことを確認ということです。 HTTPプロキシツールを実行しなくても、それが起こっていることは決してわかりません。私はフィドラーに画像が読み込まれているのを見る。もちろん、ページに画像を表示することはできません。なぜなら、私はそのページにタグを文書化することを選択しなかったからです。

Firefoxは、ページ内のJavaScriptを埋め込んでいても、HTMLページを賢明に解析していないし、IMGタグを見て事前に読み込みしようとしていますか?それは私が持っている唯一の説明です。

私は簡単なテストページで再作成できればimgタグを分割しようとしましたが、できません。ここでは誰もが私に語ったイエスの場合のFirefox 4+は間違いということは、私はそれをしなければならないし、悲しいことでしょう

myvar="<"+"a href='foo'><i"+"mg src='bar'></"+"a>";. 

のようなものに変更し(または、他の多くの選択肢のうちの1つ)が、それよん仕事をします。

+0

AFAIKこれは起こりません。ある時点で文字列からDOM要素を生成していませんか? DOM要素の生成は、dodcument.writeだけでなく、さまざまな方法で行うことができます。 innerHTMLを設定すると、DOM要素が作成され、文字列がjQueryコンストラクタに渡されます(例: '' $(myvar) '')。 –

+0

さらにコードを表示できますか? –

+0

FF6でテスト済みの[fiddle](http://jsfiddle.net/AtrAp/)を作成しました(私はFF4がインストールされていません)、あなたの動作を再現することはできません。 2行目のコメントが外されている場合にのみイメージが読み込まれます。 –

答えて

1

JavaScriptは外部の.jsファイルからロードされるのでしょうか、またはスクリプトタグにインライン化されていますか?インライン化されている場合は、HTMLコンテンツとして解析されないようにしてください。代わりにCDATAと宣言してください。

<script type="text/javascript">//<![CDATA[ 

// JS Stuff 

//]]></script> 
+1

+1良い提案のために –

+0

うわー、これらの自分自身を行うのに十分なインテリジェントではないブラウザは本当ですか? – alnorth29

+0

これは良い提案ではありません。 CDATAハックは、スクリプトタグを認識していないMOSAICのように、JavaScriptをレンダリングするための初代のブラウザを防ぐために使用されていました。しかし、この第1世代のブラウザ以来、すべてのブラウザは、たとえスクリプトを解析して実行しなくても、スクリプトタグを認識しています。過去から時間旅行者があなたのウェブサイトを訪問したと思わないなら、あなたはこの構造を必要としません。 –

関連する問題