Использование <noscript>в <head>: хорошая идея или плохая идея? - PullRequest
8 голосов
/ 13 августа 2011

Я заметил, что Facebook делает это, когда у них есть мета-обновление, заключенное в <noscript>, заключенное в тег * <head>.Они используют это, чтобы определить, включен или нет пользовательский агент javascript.

Мы думали об использовании этого метода по двум причинам:

  1. Для автоматического перенаправления на не-js оптимизированныйверсия сайта, как это делает Facebook.
  2. Чтобы включить таблицу стилей, отличную от js, мы надеемся отключить указатель пальцем над якорями только javascript, а также для браузеров жалоб CSS3, потушив эти кнопки, чтобы сделать их более очевиднымиотключено (скорее не работает).

Будет ли использование этого метода по вышеуказанным причинам вызывать какие-либо неблагоприятные последствия, которые затронут большой процент пользовательских агентов?

Ответы [ 2 ]

6 голосов
/ 13 августа 2011

Нет, не должно быть никаких экстравагантных побочных эффектов при использовании тега <noscript> в голове.

Тем не менее, у <noscript> есть * несколько недостатков:

  • Работает только в том случае, если браузер не поддерживает JavaScript или если он отключен.Содержимое тега <noscript> будет невидимым, если Javascript заблокирован брандмауэром.
  • Пользовательские агенты с очень плохой поддержкой Javascript по-прежнему будут игнорировать содержимое <noscript>.
  • Хотя большинство браузеровподдержка <noscript> в голове, это технически недопустимый X (HTML), поэтому ваши страницы могут не проверяться.

IMO, то, что вы хотите сделать, это очень хорошая вещь, и это уместноиспользование тега.Тем не менее, еще лучшим решением было бы использовать обнаружение функций в вашем Javascript для включения функций Javascript вместо использования <noscript> для их отключения.

Если вы зависите от функций HTML5, я бы порекомендовал для этой цели библиотеку Modernizr .

3 голосов
/ 13 августа 2011

Во-вторых, я бы порекомендовал использовать метод, который изначально присваивает элементам <html> класс no-js, затем немедленно удаляет этот класс с помощью JavaScript и заменяет его классом js (или включает библиотека типа Modernizr , которая делает это автоматически). Таким образом, вы можете настроить стили CSS как на включенные, так и на отключенные ситуации JavaScript, добавив к этим стилям префикс .js или .no-js.

Примерно так, например:

.js span.javascriptOnlyAnchor { cursor: pointer; text-decoration: underline; }

.no-js span.javascriptOnlyAnchor { display: none; }

Пол Айриш говорит об этом здесь: http://paulirish.com/2009/avoiding-the-fouc-v3/

...