После долгих размышлений и изменения моего кода взад и вперед я думаю, что теперь у меня есть более четкая картина, и я хотел бы поделиться своими ценностями в два цента, прежде чем я забуду.
<div id='noscript'>show non-js content</div>
<script>document.getElementById('noscript').style.display='none';</script>
<script id='required script'>show js content</script>
против
<noscript>show non-js content</noscript>
<script id='required script'>//show js content</script>
В зависимости от ситуации, есть три случая для рассмотрения:
Случай 1 - Если требуется, скрипт является встроенным
JavaScript отключен
- Содержимое в элементе
<noscript>
появляется немедленно, содержимое не-js
показан
- Содержимое в элементе
<div>
появляется немедленно, отображается содержимое не-js
JavaScript включен
- Содержимое в элементе
<noscript>
не отображается вообще, отображается содержимое js
- Содержимое элемента
<div>
может на мгновение появиться перед тем, как быть скрытым, js
показанный контент
В этом случае целесообразно использовать элемент <noscript>
.
Случай 2 - если требуется скрипт из внешнего (стороннего) источника, но скрытие элемента <div>
выполняется с помощью встроенного скрипта
JavaScript отключен
- Содержимое в элементе
<noscript>
появляется сразу, содержимое не-js
показан
- Содержимое в элементе
<div>
отображается немедленно, содержимое не в формате js отображается
JavaScript включен, но необходимый скрипт заблокирован
- Содержимое элемента
<noscript>
вообще не отображается, ничего не отображается!
- Содержимое элемента
<div>
может на мгновение появиться перед тем, как быть скрытым, ничего не отображается!
JavaScript включен и требуемый скрипт получен
* * 1068
Содержимое в элементе
<noscript>
не отображается вообще, отображается содержимое js
Содержимое элемента
<div>
может на мгновение появиться перед тем, как быть скрытым, js
показанный контент
В этом случае целесообразно использовать элемент <noscript>
.
Случай 3 - При необходимости скрипт скрывает элемент <div>
JavaScript отключен
- Содержимое в элементе
<noscript>
появляется немедленно, содержимое не-js
показан
- Содержимое в элементе
<div>
появляется сразу, отображается содержимое не-js
JavaScript включен, но необходимый скрипт заблокирован
- Содержимое элемента
<noscript>
вообще не отображается, ничего не отображается!
- Отображается содержимое в элементе
<div>
, отображается содержимое не-js
JavaScript включен и требуемый скрипт получен
- Содержимое в элементе
<noscript>
не отображается вообще, отображается содержимое js
- Содержимое элемента
<div>
может на мгновение появиться перед тем, как быть скрытым, js
показанный контент
В этом случае целесообразно использовать элемент <div>
.
В итоге
Используйте элемент <noscript>
, если рендеринг содержимого HTML зависит от сторонних сценариев или если требуемый сценарий встроен. Иначе, используйте элемент <div>
и убедитесь, что требуемый скрипт содержит:
document.getElementById('noscript').style.display='none';