Загрузка активов в элементе noscript

Я ожидаю, что стандартное поведение будет не загружать какие-либо активы в <noscript> элемент, и быстрый беглый тест в FF и Chrome доказывает, что это так. Тем не менее, есть ли ситуации, когда активы (например, изображение) в <noscript> элемент, будет загружен, когда сценарии включены?

2 ответа

Решение

Согласно спецификации W3:

Элемент NOSCRIPT позволяет авторам предоставлять альтернативный контент, когда скрипт не выполняется. Содержимое элемента NOSCRIPT должно обрабатываться только пользовательским агентом с поддержкой сценариев в следующих случаях: Пользовательский агент настроен не оценивать сценарии. Пользовательский агент не поддерживает язык сценариев, вызываемый элементом SCRIPT ранее в документе. Пользовательские агенты, которые не поддерживают клиентские сценарии, должны отображать содержимое этого элемента.

Так что, я думаю, как доказали ваши тесты: элементы внутри <noscript> раздел не будет отображаться (то есть загружаться) вообще, когда клиент поддерживает <script> элементы.

Я также только что проверил это на моей странице, которая использует изображение внутри <noscript> частично, и ни Chrome, ни FF, ни Opera, ни IE не проявили никакого интереса к загрузке изображения.

Я думаю, это зависит от того, что вы имеете в виду. Возьми эту разметку:

<!DOCTYPE html>
<html>
  <head>
    <title>Test Case</title>
  </head>
  <body>
    <noscript id="ns">
    </noscript>
    <script>
      var ns = document.getElementById("ns");
      ns.innerHTML = "</noscript><img src='http://www.alohci.net/dummy'>";
    </script>
  </body>
</html>

В Firefox это приведет к <img> элемент внутри <noscript> элемент и изображение, на которое ссылаются, выбирается с сервера.

Заметки:
1. Я понятия не имею, почему это происходит.
2. Только Firefox, кажется, делает это.
3. Я не могу представить себе какую-либо пользу для этого.

Другие вопросы по тегам