19

次の例を検討してください。

<noscript>
    <img class="photo" src="example.png">
</noscript>

Javascript が無効になっている場合にのみ、クライアントは画像ファイルをダウンロードしますか? (この例で Javascript が無効になっている場合、クライアントは画像しか見ることができないことは承知しています)

私が尋ねている理由は、外部 CSS のいくつかの background-image プロパティに base64 データ URI を使用している (http 要求を回避している) ためです。一部の img タグの src 値に base64 データ URI を使用して、外部 Javascript を介して値を更新することも考えています (キャッシュの利点を維持するため)。

本質的に、これの全体的なポイントは、http リクエストを回避/制限することです。そのため、Javascript が無効になっている場合に、正常に劣化して画像ファイルのみを取得できるかどうか疑問に思っていましたか? それとも、画像は関係なくダウンロードされますか?

4

2 に答える 2

14

noscriptHTML 4.01 仕様では、 のコンテンツは特定の状況ではレンダリングされないとだけ述べられています。ただし、これは、ブラウザがそのような状況でそのコンテンツに基づいて GET 操作を実行すべきではないことを示唆しています。そのような操作は無意味であり、効率を低下させるからです。

HTML5 ドラフトはより明示的であり、おそらく実際のブラウザーの動作を反映しています。noscript要素については、次のように強調されています。noscript(注記は、XHTML 構文を使用すると が機能しない理由に関連していますが、機能する場合に機能する原理も明らかにします。)

したがって、スクリプトが有効になっている場合、 の内容はnoscript解析されないことが予想されます (終了タグの認識を除く)。Blender の答えはこれを確認しているようで、Firefox での私の小さな実験もそうです:

<img src=foo style="foo: 1">
<noscript>
<img src=bar style="bla: 1">
</noscript>

スクリプトが有効になっている場合、Firefox は に対して失敗する GET リクエストを行いますfooが、リクエストは行いません。barさらにfoo: 1、エラー コンソールに誤った CSS コードに関する警告が表示されますが、 に関する警告は表示されませんbla: 1。そのため、明らかにimgタグは解析されていませんでした。

ただし、質問の理由として提示されたシナリオに質問がどのように関連しているかはわかりません。img外部の要素を使用し、URLnoscriptを使用しdata:て目的の初期コンテンツ (スクリプトが無効になっている場合、フォールバックとして最終コンテンツのままになります)をそこに配置すると思います。

于 2013-02-06T06:53:20.250 に答える