W3docs

HTML тег <param>

Устаревший HTML-тег <param> передавал именованные параметры плагинам, встроенным через <object>. Узнайте, что он делал и чем заменяется.

Устарел / не поддерживается. Тег <param> больше не является частью стандарта HTML и не должен использоваться на новых страницах. Он существовал исключительно для настройки браузерных плагинов, а технология плагинов, которую он обслуживал (Flash, Java-апплеты, QuickTime, Silverlight), удалена из всех современных браузеров. Эта страница сохраняется как справочный материал и для понимания устаревшего кода.

Тег <param> («параметр») передавал именованные значения конфигурации плагину, встроенному с помощью элемента <object>. Каждый <param> задавал один параметр в виде пары name/value — подобно аргументу «ключ/значение», передаваемому плагину при его загрузке.

<object data="movie.swf" type="application/x-shockwave-flash">
  <param name="quality" value="high">
  <param name="bgcolor" value="#ffffff">
</object>

Внутри одного <object> можно было размещать несколько <param>. Каждый из них требовал атрибутов name и value, и все они должны были располагаться до любого резервного содержимого (текста или разметки, отображаемых при ошибке загрузки объекта).

Зачем он существовал: плагины и NPAPI

До того как браузеры получили нативную поддержку медиа и насыщенных приложений, интерактивный контент — видеоплееры, игры, просмотрщики документов — работал внутри внешних плагинов через интерфейс NPAPI (Netscape Plugin Application Programming Interface). Наиболее распространёнными примерами были Adobe Flash, Java-апплеты, Microsoft Silverlight и Apple QuickTime.

Страница встраивала плагин с помощью <object> (или впоследствии удалённого элемента <applet>), а <param> был единственным способом передать параметры запуска. Для Flash-ролика можно было задать quality, bgcolor, loop или строку flashvars; для Java-апплета — путь code или специфичные для апплета настройки.

Примечание: <param> также использовался внутри <applet>, но элемент <applet> был полностью удалён из HTML — он не просто устарел, он не имеет определённого поведения в современных браузерах.

Браузеры начали отключать NPAPI-плагины примерно в 2015 году и вскоре полностью от них отказались; Adobe прекратила поддержку Flash в конце 2020 года. Поскольку плагинов больше не осталось, тегу <param> стало нечего настраивать.

Важно: <param> никогда не был допустим внутри <video> или <audio>. Эти элементы настраиваются через собственные атрибуты и дочерние элементы <source> и <track> — не через <param>.

Современные альтернативы

Почти всё, что раньше делали плагины, теперь имеет нативную HTML- или веб-замену:

  • Видео и аудио — используйте нативные элементы <video> и <audio> с их собственными атрибутами (controls, autoplay, loop, muted) и дочерними элементами <source>/<track>.
  • Интерактивные приложения и игры — создаются с помощью HTML, CSS, JavaScript, Canvas, WebGL или WebAssembly.
  • Встраивание других документов — используйте <object>, <iframe> или <embed>.
  • Передача конфигурации встраиваемому контенту — задавайте атрибуты data-* на элементе (или в строке запроса встраивающего <iframe>) и считывайте их с помощью JavaScript вместо использования <param>.
<!-- The modern equivalent of "configuring an embed": data-* + JavaScript -->
<div id="player" data-autoplay="true" data-volume="0.5"></div>

<script>
  const el = document.getElementById('player');
  const autoplay = el.dataset.autoplay === 'true';
  const volume = parseFloat(el.dataset.volume);
  // initialize your player with autoplay and volume...
</script>

Синтаксис

Тег <param> является пустым, то есть закрывающий тег не обязателен. Однако в XHTML тег <param> должен быть самозакрывающимся (&lt;param /&gt;).

HTML-тег <param>

<object>
  <param name="..." value="...">
</object>

Пример HTML-тега <param>

<!DOCTYPE html>
<html>
  <head>
    <title>The title of the document</title>
  </head>
  <body>
    <p>Embedded object example</p>
    <object width="320" height="240" data="movie.swf" type="application/x-shockwave-flash">
      <param name="quality" value="high">
    </object>
  </body>
</html>

Пример HTML-тега <param> с атрибутами "name" и "value"

<!DOCTYPE html>
<html>
  <head>
    <title>The title of the document</title>
  </head>
  <body>
    <p>Embedded object example</p>
    <object width="320" height="240" data="example.pdf">
      <param name="param1" value="value1">
    </object>
  </body>
</html>

Атрибуты

АтрибутЗначениеОписание
namenameЗадаёт имя параметра. Обязателен.
valuevalueЗадаёт значение параметра. Обязателен.
typemedia_typeMIME-тип значения. Устарел — использовался только когда valuetype имел значение ref, чтобы сообщить плагину тип ресурса по указанному URL.
valuetypedata, object, refСпособ интерпретации value плагином. Устарел.

В HTML5 были сохранены только name и value; атрибуты type и valuetype были исключены.

О type и valuetype

Эти два атрибута сами по себе ничего не делали — они лишь описывали, как плагин должен читать value. Атрибут valuetype имел три возможных значения:

  • data (по умолчанию) — value является обычной строкой, передаваемой непосредственно плагину.
  • refvalue является URL, указывающим на ресурс, который должен загрузить плагин. В этом случае type сообщал плагину MIME-тип этого ресурса.
  • objectvalue является id другого элемента <object> на странице.

Поскольку плагинов больше не существует, ни один из этих атрибутов не имеет никакого эффекта сегодня. Они задокументированы здесь только для того, чтобы вы могли распознать их в старом коде.

Примечание: Рассматривайте тег <param> как исторический артефакт. Новые страницы должны использовать нативные <video> / <audio>, стандартное встраивание через <object> или <iframe>, а атрибуты data-*, считываемые JavaScript, — для настройки встраиваемого контента.

Практика

Практика
Что делал (ныне устаревший) HTML-тег param?
Что делал (ныне устаревший) HTML-тег param?
Was this page helpful?