Есть ли в HTML тег, который будет отображать свое содержимое, только если включен JavaScript? Я знаю, что <noscript>
работает наоборот, отображая его HTML-контент, когда JavaScript отключен. Но я хотел бы отображать форму на сайте, только если доступен JavaScript, и объяснять им, почему они не могут использовать форму, если у них ее нет.
Единственный способ, которым я знаю, как это сделать, - использовать document.write();
метод в теге скрипта, и это кажется немного беспорядочным для больших объемов HTML.
javascript
html
noscript
Re0sless
источник
источник
display: none !important
, чтобы предотвратить его переопределение более конкретными правилами (например, селекторами id или css), которые предназначены для его использования, когда скрипты включены.<noscript>
при первом обновлении страницы после отключения Javascript в настройках. Вам нужно дважды нажать перезагрузить, чтобы он заработал.Я не совсем согласен со всеми ответами здесь о встраивании HTML заранее и сокрытии его с помощью CSS, пока он снова не будет показан с помощью JS. Даже без включенного JavaScript этот узел все еще существует в DOM. Конечно, большинство браузеров (даже браузеры с расширенными возможностями) игнорируют его, но он все еще существует, и могут быть странные моменты, когда он снова укусит вас.
Я предпочитаю использовать jQuery для создания контента. Если содержимого будет много, то вы можете сохранить его как фрагмент HTML (только тот HTML, который вы хотите показать, и ни одного тега html, body, head и т. Д.), А затем используйте функции jQuery ajax для его загрузки в полную страницу.
test.html
_test.html
результат
источник
Прежде всего, всегда разделяйте контент, разметку и поведение!
Теперь, если вы используете библиотеку jQuery (вам действительно стоит, она делает JavaScript намного проще), следующий код должен работать:
Это даст вам дополнительный класс в теле, когда JS включен. Теперь в CSS вы можете скрыть область, когда класс JS недоступен, и показать область, когда JS доступен.
В качестве альтернативы вы можете добавить
no-js
в тег body как класс по умолчанию и использовать этот код:Помните, что он все еще отображается, если CSS отключен.
источник
У меня есть простое и гибкое решение, чем-то похожее на Уилла (но с дополнительным преимуществом валидности HTML):
Присвойте элементу body класс jsOff. Удалите (или замените) это на JavaScript. Есть CSS, чтобы скрыть любые элементы с классом «jsOnly» с родительским элементом с классом «jsOff».
Это означает, что если включен JavaScript, класс «jsOff» будет удален из тела. Это будет означать, что элементы с классом «jsOnly» не будут иметь родительского элемента с классом «jsOff» и поэтому не будут соответствовать селектору CSS, который их скрывает, поэтому они будут показаны.
Если JavaScript отключен, класс «jsOff» не будет удален из тела. Элементы с «jsOnly» будут иметь родительский элемент с «jsOff» и будут соответствовать селектору CSS, который их скрывает, поэтому они будут скрыты.
Вот код:
Это действительный HTML. Это просто. Это гибко.
Просто добавьте класс jsOnly к любому элементу, который вы хотите отображать только при включенном JS.
Обратите внимание, что JavaScript, удаляющий класс «jsOff», должен выполняться как можно раньше внутри тега body. Его нельзя выполнить раньше, поскольку тега body еще не будет. Его не следует выполнять позже, так как это будет означать, что элементы с классом «jsOnly» могут не отображаться сразу (поскольку они будут соответствовать селектору CSS, который их скрывает, пока класс «jsOff» не будет удален из основного элемента).
Это также может обеспечить механизм для стиля только js (например
.jsOn .someClass{}
) и стиля no-js (например.jsOff .someOtherClass{}
). Вы можете использовать его как альтернативу<noscript>
:источник
Вы также можете использовать Javascript для загрузки контента из другого исходного файла и вывода его. Это может быть немного больше черного ящика, чем вы ищете.
источник
Вот пример скрытого способа div:
(Возможно, вам придется подправить его для плохого IE, но вы поняли идею.)
источник
Мое решение
.css:
.js:
.html:
источник
Здесь на ум приходит статья Алекса , однако она применима только в том случае, если вы используете ASP.NET - ее можно эмулировать в JavaScript, но, опять же, вам придется использовать document.write ();
источник
Вы можете установить видимость абзаца | div как «скрытый».
Затем в функции «onload» вы можете установить видимость «visible».
Что-то вроде:
<body onload = "javascript: document.getElementById (rec) .style.visibility = visible"> <p style = "visibility: visible" id = "rec"> Этот текст будет скрыт, если не доступен javascript. </p>
источник
Для этого нет метки. Вам нужно будет использовать javascript для отображения текста.
Некоторые люди уже предлагали использовать JS для динамической установки видимого CSS. Вы также можете динамически генерировать текст с
document.getElementById(id).innerHTML = "My Content"
узлами или динамически создавать их, но CSS-хак, вероятно, самый простой для чтения.источник
Спустя десятилетие после того, как был задан этот вопрос,
HIDDEN
атрибут был добавлен в HTML. Это позволяет напрямую скрывать элементы без использования CSS. Как и в случае с решениями на основе CSS, элемент не должен быть скрыт скриптом:источник