Подтвердить что ты не робот

Является ли изображение в теге noscript загруженным только в том случае, если Javascript отключен?

Рассмотрим следующий пример:

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

Клиент загружает только файл изображения, если отключен Javascript? (Я знаю, что клиент может видеть только изображение, если в этом примере отключен Javascript)

Причина, по которой я спрашиваю, заключается в том, что я использовал URI базовых данных для нескольких свойств фонового изображения во внешнем CSS (избегая HTTP-запросов). Я также хотел бы использовать базовые URI-данные для значения src для некоторых img-тегов, обновляя их значения через внешний Javascript (чтобы сохранить преимущества кэширования).

По сути, все дело в том, чтобы избежать/ограничить HTTP-запросы, и поэтому мне было интересно, могу ли я грамотно деградировать и только извлекать файлы изображений, если Javascript отключен? Или загружается ли изображение независимо?

4b9b3361

Ответ 1

Короткий ответ:
НЕТ, изображения НЕ загружаются внутри элемента <noscript>

Технический ответ:

Я только что провел некоторое тестирование на

Будучи типом веб-geek, который стремится "просматривать источник" практически на каждом сайте, я смотрю (!), код HTML для сообщения выглядит следующим образом:

<noscript>
    <div id="noscript-warning">Qaru works best with JavaScript enabled<img src="http://example.com/path/to/1x1-pixel.gif" alt="" class="dno"></div>
</noscript>

Ничто не слишком изнурительно. Однако меня интересовал элемент IMG, который ссылался на невидимое изображение 1px на 1px.

Я предполагаю, что это изображение должно использоваться программным обеспечением analytics/statistics, чтобы определить, сколько их пользователей просматривают без JavaScript. Если это предположение верно (и нет какой-либо другой причины для использования пустого изображения размером 1x1 здесь, которое здесь не рассматривается), поэтому это в основном подтверждает следующее: браузеры не загружают содержимое чего-либо в пределах NOSCRIPT элемент, за исключением ситуации, когда JavaScript фактически отключен. (И, похоже, не существует каких-либо ретро-моделей в стиле 98-го стиля, я рад сказать!); -)

(P.S. - Надеюсь, что я никого не обижу в сети Stack Exchange, указав это!)

Ответ 2

В спецификации HTML 4.01 указано, что содержимое noscript не отображается в определенных ситуациях. Однако это говорит о том, что браузеры не должны выполнять какие-либо операции GET на основе своего контента в таких ситуациях, поскольку такие операции были бы бессмысленны и снижали бы эффективность.

Проект HTML5 более ясен и, вероятно, отражает фактическое поведение браузера. Он говорит о noscript element, в подчеркнутой заметке: "он работает, по сути, отключает парсер, когда скрипты включены, поэтому что содержимое элемента рассматривается как чистый текст, а не как реальные элементы". (Примечание связано с тем, почему noscript не работает при использовании синтаксиса XHTML, но также раскрывает принцип, с помощью которого он работает, когда он работает.)

Таким образом, мы можем ожидать, что при включении сценариев содержимое noscript даже не будет проанализировано (кроме распознавания конечного тега). Ответ Blenders, кажется, подтверждает это, и мой маленький эксперимент с Firefox:

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

Firefox делает неудачный запрос GET для foo, но без запроса для bar, когда скриптинг включен. Кроме того, на предупреждающей консоли отображается предупреждение об ошибочном CSS-коде foo: 1, но нет предупреждения о bla: 1. Поэтому, по-видимому, тег img даже не разбирался.

Однако я не вижу, как вопрос относится к сценарию, представленному в качестве причины для его запроса. Я думаю, вы используете элемент img вне noscript и помещаете туда, используя data: URL, желаемый исходный контент (который останется, как резервное, окончательный контент, когда сценарий отключен).