Олег Марков
Параметр объекта в HTML - param полное руководство
Введение
Тег param в HTML используется внутри тега object и передаёт ему параметры конфигурации. Проще говоря, это способ задать объекту дополнительные настройки: имя файла, режим проигрывания, качество отображения, ссылки на субтитры и многое другое.
Смотрите, я покажу вам, как это выглядит в самом простом виде:
<object data="video.mp4" type="video/mp4">
<!-- Здесь мы задаем параметр "autoplay" для объекта -->
<param name="autoplay" value="true">
</object>
Тег param относится к «наследию» веба: он активно использовался с Flash, Java-апплетами, ActiveX и другими встроенными объектами. Сегодня большинство из этих технологий устарели, но param все ещё может встречаться в старых проектах, а также иногда используется для настройки медиа или кастомных плееров через object.
Давайте разберёмся, как устроен тег param, где он ещё актуален, какие у него ограничения и как правильно с ним работать в современных условиях.
Основы тега param
Назначение и место в структуре HTML
Тег param:
- всегда располагается только внутри тега object
- сам по себе ничего не отображает
- используется, чтобы передать объекту именованные параметры
Синтаксис:
<object data="..." type="...">
<param name="имя_параметра" value="значение">
</object>
Важно: объект, на который ссылается тег object, должен сам понимать, что делать с этим параметром. Браузер просто передаёт пару имя–значение во встроенный компонент.
Пустой (void) элемент
param — пустой элемент:
- не имеет закрывающего тега
- не может содержать дочерние элементы
- вся информация передаётся через атрибуты
Правильно:
<param name="quality" value="high">
Неправильно:
<!-- Так делать не нужно -->
<param name="quality">high</param>
Такая запись нарушает спецификацию и может быть по-разному интерпретирована браузерами.
Где можно и где нельзя использовать param
Разрешено:
<object data="movie.mp4" type="video/mp4">
<param name="autoplay" value="true">
</object>
Запрещено (браузер проигнорирует param):
<!-- Тег param вне object не имеет смысла -->
<div>
<param name="x" value="1">
</div>
Или:
<!-- Внутри audio/video param не работает -->
<video src="movie.mp4">
<param name="autoplay" value="true">
</video>
Для тегов audio и video нужно использовать их собственные атрибуты (autoplay, controls, loop и так далее), а не param.
Основные атрибуты param
Обязательные и рекомендуемые атрибуты
У param по сути два ключевых атрибута:
- name — имя параметра
- value — значение параметра
<param name="autoplay" value="true">
<param name="quality" value="high">
Если не указать name, параметр будет бессмысленным для получателя. Значение value может быть строкой, числом, путём к файлу, логическим значением — всё зависит от того, как этот параметр интерпретирует вставляемый объект.
Атрибут name
Атрибут name — это ключ, по которому объект найдёт нужный параметр. Смотрите, как это работает в типичном примере:
<object data="player.swf" type="application/x-shockwave-flash">
<!-- Имя параметра: movie -->
<param name="movie" value="video.mp4">
<!-- Имя параметра: autoplay -->
<param name="autoplay" value="true">
</object>
Комментарии к коду:
- встроенный Flash-плеер будет искать параметры по имени, например "movie" и "autoplay"
- если вы ошибётесь в имени (например, "autplay" вместо "autoplay"), объект просто не поймёт этот параметр
Имя чувствительно к регистру или нет — зависит от конкретной технологии, которую вы встраиваете.
Рекомендация: придерживайтесь документации к объекту (плееру, виджету), который подключаете через object. Именно там описывается, какие имена параметров он ожидает.
Атрибут value
Атрибут value задаёт собственно значение параметра:
<param name="autoplay" value="true">
<param name="volume" value="80">
<param name="theme" value="dark">
<param name="poster" value="preview.jpg">
Параметр интерпретируется тем объектом, который подключён через object:
- "true" может означать включение некоторой опции
- "80" — уровень громкости
- "dark" — тему оформления
- "preview.jpg" — путь к картинке
Пример с медиафайлом:
<object data="player.swf" type="application/x-shockwave-flash">
<!-- Указываем путь к видеофайлу -->
<param name="file" value="videos/intro.mp4">
<!-- Указываем постер (обложку) -->
<param name="image" value="images/intro-poster.jpg">
</object>
Комментарии:
// Параметр file - путь к проигрываемому файлу // Параметр image - путь к изображению-превью, которое отображается до старта проигрывания
Атрибут type (редко используемый)
У param также есть атрибут type, который может задавать MIME-тип значения, но в реальных проектах он почти не используется. Обычно объект сам знает, какой формат ожидать.
Пример, который вы можете встретить в старом коде:
<param name="data" value="config.json" type="application/json">
На практике большинство разработчиков ограничивается name и value.
Атрибут value-type (устаревший)
Раньше в черновиках спецификаций можно было встретить атрибут value-type, но в стандарт HTML5 он не вошёл. В современных проектах его использовать не нужно.
Если вы видите что-то вроде:
<!-- Пример старого кода, лучше так не писать -->
<param name="settings" value="..." valuetype="data">
то это повод задуматься об обновлении кода и проверке логики.
Примеры использования param в связке с object
Настройка Flash-плеера (исторический пример)
Сейчас Flash окончательно снят с поддержки, но именно с ним вы чаще всего встретите param в старых проектах.
Давайте разберём пример кода, который можно увидеть в архивах:
<object
data="player.swf"
type="application/x-shockwave-flash"
width="640"
height="360"
>
<!-- Путь к Flash-файлу (сам плеер) -->
<param name="movie" value="player.swf">
<!-- Разрешаем полноэкранный режим -->
<param name="allowFullScreen" value="true">
<!-- Включаем JavaScript-API -->
<param name="allowScriptAccess" value="always">
<!-- Устанавливаем качество отрисовки -->
<param name="quality" value="high">
<!-- Включаем прозрачный фон -->
<param name="wmode" value="transparent">
</object>
Комментарии:
// Параметр movie - основной SWF файл // allowFullScreen - разрешает или запрещает полноэкранный режим // allowScriptAccess - определяет, может ли JavaScript взаимодействовать с объектом // quality - управляет качеством рендеринга // wmode - управляет способом отображения (поверх других элементов, прозрачность и т.п.)
Сегодня важнее понимать это для поддержки старого кода, чем для написания нового. Тем не менее, этот пример наглядно показывает идею: param передаёт во встроенный объект его настройки.
Передача конфигурации в собственный плеер через object
Представьте, что у вас есть собственный плеер, реализованный, например, через какой-то плагин (исторически это мог быть ActiveX на Windows).
Тогда вы могли бы использовать param для передачи конфигурации:
<object
data="customPlayer.dll"
type="application/x-custom-player"
width="640"
height="360"
>
<!-- Файл для воспроизведения -->
<param name="source" value="media/lecture1.mp4">
<!-- Громкость по умолчанию -->
<param name="volume" value="70">
<!-- Включить автозапуск -->
<param name="autoplay" value="false">
<!-- Цвет интерфейса -->
<param name="uiColor" value="#222222">
</object>
Комментарии:
// source - путь к медиафайлу // volume - начальная громкость, в условных процентах // autoplay - флаг автостарта (обработка делается внутри плеера) // uiColor - цвет интерфейса, который понимает сам объект
Обратите внимание: браузер здесь не знает, что значат эти параметры. Вся логика заложена в объекте.
Каскадность параметров и значения по умолчанию
Некоторые объекты могут иметь значения по умолчанию. То есть если параметр не указан через param, объект использует внутреннюю настройку.
Например:
<object
data="player.swf"
type="application/x-shockwave-flash"
width="640"
height="360"
>
<!-- Указываем только обязательные параметры -->
<param name="movie" value="player.swf">
<param name="file" value="videos/lesson1.mp4">
</object>
Если у плеера, например, по умолчанию выключен автозапуск и громкость 50, а вы это не переопределяете, то он будет работать с этими дефолтными значениями.
То есть param — это не всегда полный набор настроек, а только те параметры, которые вы хотите переопределить.
Отличия param в HTML4 и HTML5
Изменения статуса
В HTML4 теги object и param были основным способом внедрения мультимедиа и плагинов в страницу. В HTML5 ситуация изменилась:
- появились семантические теги video, audio, embed
- использование плагинов (Flash, Java-апплетов, ActiveX) стало уходить
- многие браузеры ограничили или отключили поддержку таких плагинов
Тем не менее:
- тег param по-прежнему присутствует в HTML Living Standard
- он всё ещё может быть использован с object
- для нового кода его использование практически не рекомендуется
Рекомендации спецификаций
Современные рекомендации:
- для видео — использовать video
- для аудио — использовать audio
- для встраивания внешних документов — iframe
- object и param оставлять только для узкоспециализированных задач или поддержки старых систем
Пример замены:
Старый код:
<object data="trailer.mp4" type="video/mp4" width="640" height="360">
<param name="autoplay" value="true">
</object>
Современная версия:
<video src="trailer.mp4" width="640" height="360" autoplay controls>
<!-- Текст, который увидит пользователь без поддержки video -->
Ваш браузер не поддерживает видео
</video>
Комментарии:
// Вместо object/param используются нативные атрибуты video // autoplay отвечает за автостарт // controls включает стандартные элементы управления плеера
В новом коде такой подход предпочтительнее.
Особенности работы и поведение браузеров
Очерёдность обработки параметров
Как правило, важен не порядок следования param, а сам факт их наличия. Но иногда порядок может играть роль, если вы:
- задаёте два раза один и тот же name
- используете параметр, который влияет на интерпретацию других параметров
Например:
<object data="player.swf" type="application/x-shockwave-flash">
<!-- Первый раз задаем volume -->
<param name="volume" value="50">
<!-- Второй раз задаем volume, но с другим значением -->
<param name="volume" value="80">
</object>
Что произойдёт:
// Обычно будет использовано последнее значение (80) // Но поведение зависит от реализации объекта
Чтобы не создавать неоднозначности, лучше избегать дублирования имён параметров.
Взаимодействие с JavaScript
Обычно параметры, переданные через param, читаются внутри самого объекта, а не через DOM JavaScript. Однако в некоторых случаях вы можете управлять object из JavaScript:
- Через свойства элемента object
- Через предоставляемый объектом API
Пример доступа к объекту:
<object
id="legacyPlayer"
data="player.swf"
type="application/x-shockwave-flash"
width="640"
height="360"
>
<param name="movie" value="player.swf">
<param name="file" value="videos/clip.mp4">
</object>
<script>
// Получаем элемент object по id
var player = document.getElementById('legacyPlayer');
// Проверяем, доступен ли API плеера
// Конкретные методы зависят от документации плеера
if (player && typeof player.play === 'function') {
// Запускаем воспроизведение
player.play();
}
</script>
Комментарии:
// JS не меняет param напрямую, он общается с самим объектом // Механизм вызова методов зависит от того, какой объект встроен
Если вы измените param через DOM после загрузки, это не гарантирует, что объект применит новые значения:
// Пример, который может не сработать, как вы ждете
var param = document.querySelector('object param[name="file"]');
param.value = 'videos/new-clip.mp4';
// Встроенный объект может не «подхватить» это изменение
Обычно параметры считываются объектом один раз при инициализации.
Поддержка различными браузерами
Поддержка тега param как части object есть практически во всех браузерах, но поведение может отличаться в деталях и зависит от:
- типа встраиваемого контента
- платформы (Windows, macOS, Linux, мобильные устройства)
- наличия или отсутствия старых плагинов
На практике:
- современные браузеры могут игнорировать object, если плагин не поддерживается
- параметры param передаются, только если сам объект вообще загружается
Поэтому важно готовить fallback-контент, о чём мы поговорим дальше.
Fallback и доступность
Резервный контент внутри object
Особенность тега object: содержимое внутри него, кроме param, может выступать в роли резервного контента (fallback). То есть:
- если объект не может быть загружен или не поддерживается
- браузер отобразит всё внутри object, что не является param
Давайте разберёмся на примере:
<object data="player.swf" type="application/x-shockwave-flash" width="640" height="360">
<param name="movie" value="player.swf">
<param name="file" value="videos/clip.mp4">
<!-- Это fallback, который увидит пользователь без поддержки Flash -->
<p>Для просмотра видео требуется поддержка Flash. Попробуйте обновить браузер или скачайте видео по ссылке ниже.</p>
<a href="videos/clip.mp4">Скачать видео</a>
</object>
Комментарии:
// Параметры movie и file передаются плееру, если он загружается // Параграф и ссылка отображаются, если объект не может быть загружен
Такой подход улучшает доступность и помогает пользователям на современных устройствах, где старые плагины отключены.
Использование ARIA и текстовых альтернатив
Поскольку param невидим для пользователя, о доступности стоит думать на уровне object и его fallback-контента:
- добавляйте понятные текстовые описания
- используйте атрибут title у object при необходимости
- при встраивании медиа давайте возможность скачать файл напрямую
Пример с лаконичным описанием:
<object
data="player.swf"
type="application/x-shockwave-flash"
width="640"
height="360"
title="Видео презентация нового продукта"
>
<param name="movie" value="player.swf">
<param name="file" value="videos/presentation.mp4">
<p>Видео презентация нового продукта. Если плеер не загрузился, вы можете
<a href="videos/presentation.mp4">скачать видео по ссылке</a>.</p>
</object>
Комментарии:
// title помогает кратко описать назначение объекта // Внутренний текст и ссылка дают пользователю альтернативу
Практические советы по использованию param сегодня
Когда имеет смысл использовать param
Реальные случаи, где param всё ещё актуален:
Поддержка старых корпоративных систем
- Внутренние порталы, где используются устаревшие плагины
- Интранет-приложения, завязанные на ActiveX или Java-апплеты
Поддержка старых учебных систем
- Курсы, созданные 10–15 лет назад
- Обучающие модули на Flash
Анализ и рефакторинг legacy-кода
- Вам нужно понять, что делают старые param
- Нужно грамотно мигрировать логику на современные технологии
В новых публичных веб-проектах стоит избегать object/param и ориентироваться на видео, аудио, iframe и JavaScript-виджеты без плагинов.
Как аккуратно работать с legacy-кодом
Если вы столкнулись с уже существующим кодом, где активно используется param, удобнее двигаться шагами:
Проанализировать, какие параметры реально влияют на поведение
- Смотрите документацию к плееру или плагину
- Сопоставьте параметры с ожидаемыми опциями
Упорядочить и документировать параметры
- Сгруппируйте смысловые блоки (видео, управление, безопасность)
- Добавьте комментарии в HTML
Вот пример:
<object
data="player.swf"
type="application/x-shockwave-flash"
width="800"
height="450"
>
<!-- Путь к основному SWF-файлу плеера -->
<param name="movie" value="player.swf">
<!-- Настройки источника видео -->
<param name="file" value="videos/course-intro.mp4">
<param name="image" value="images/course-intro-poster.jpg">
<!-- Настройки управления -->
<param name="autostart" value="false">
<param name="volume" value="60">
<!-- Настройки взаимодействия с JS -->
<param name="allowScriptAccess" value="always">
</object>
Комментарии:
// Группировка и комментарии помогают не потеряться в наборе параметров // Позже будет проще переносить эти настройки в новый плеер
- Постепенно переносить поведение в новые технологии
- например, заменить Flash-плеер на HTML5 video-плеер с JavaScript-обёрткой
- каждый параметр из param перенести в JS-конфигурацию нового плеера
Альтернативы param в современном стеке
Сейчас вместо param можно использовать:
Атрибуты HTML-тегов
- например, autoplay, loop, muted, controls у video и audio
data-* атрибуты для JavaScript-компонентов
- вы можете передавать параметры виджетам через data-атрибуты
Пример:
<!-- HTML5 видео с параметрами через атрибуты -->
<video
id="mainVideo"
src="videos/lesson1.mp4"
width="640"
height="360"
autoplay
controls
poster="images/lesson1-poster.jpg"
></video>
Или через data-* для JS-плеера:
<!-- Настройки передаются JavaScript-плееру через data-атрибуты -->
<div
id="jsPlayer"
data-source="videos/lesson1.mp4"
data-autoplay="false"
data-volume="70"
data-theme="dark"
></div>
<script>
// Получаем контейнер плеера
var el = document.getElementById('jsPlayer');
// Читаем настройки из data-атрибутов
var config = {
source: el.dataset.source, // videos/lesson1.mp4
autoplay: el.dataset.autoplay === 'true', // false
volume: parseInt(el.dataset.volume, 10), // 70
theme: el.dataset.theme // dark
};
// Дальше инициализируем собственный плеер на основе config
// initPlayer(el, config);
</script>
Комментарии:
// data-* атрибуты заменяют роль param для JavaScript-компонентов // Такой подход не требует использования object и плагинов
Заключение
Тег param — это часть старого механизма встраивания объектов в HTML через тег object. Его задача проста: передать объекту набор именованных параметров, которые он использует для своей настройки. В связке с плагинами вроде Flash или ActiveX param был основным способом управлять поведением встроенных компонентов.
Сегодня HTML предлагает нативные решения для большинства задач, ради которых раньше использовали object и param: мультимедиа обрабатывается через video и audio, внешние документы — через iframe, сложные интерактивные компоненты — через JavaScript и Web APIs. Поэтому в новых проектах tag param нужен крайне редко.
Тем не менее, понимание того, как работает param, помогает:
- поддерживать и постепенно обновлять старые системы
- корректно интерпретировать legacy-код
- безопасно и предсказуемо мигрировать на современные технологии
Если вам приходится работать с кодом, где активно используются object и param, стоит аккуратно документировать параметры, использовать fallback-контент и планомерно выносить логику в HTML5 и JavaScript-решения без плагинов.
Частозадаваемые технические вопросы по теме param
Как узнать, какие именно параметры поддерживает конкретный объект внутри object
Ориентируйтесь на документацию к самому объекту или плагину. Тег param сам по себе не задаёт список допустимых параметров.
Инструкция:
- Определите type и data у object (например, application/x-shockwave-flash).
- Найдите документацию к плееру или библиотеке, которая подключается этим объектом.
- Сопоставьте имена параметров в коде с их описанием в документации.
Можно ли менять параметры param динамически через JavaScript и ожидать немедленного эффекта
Гарантии нет. Чаще всего объект считывает параметры один раз при инициализации.
Инструкция:
- Если нужно менять настройки «на лету», ищите JavaScript API у плеера или плагина (методы play, pause, setVolume и так далее).
- Используйте эти методы вместо изменения param в DOM.
- Если API нет, объект, скорее всего, не поддерживает динамическое обновление параметров.
Как правильно организовать fallback, если на странице несколько object с param
Каждый object должен иметь свой собственный fallback внутри себя.
Инструкция:
- Внутри каждого object добавьте текст или ссылку, которые будут видны при отсутствии поддержки плагина.
- Следите, чтобы fallback не дублировал лишнюю информацию — он должен кратко объяснять, что пользователь видит и что можно сделать.
Можно ли использовать param для передачи больших конфигураций (например JSON)
Технически можно, но это неудобно и не соответствует современным практикам.
Инструкция:
- Если конфигурация большая, положите её в отдельный файл (JSON или другой формат).
- В param передайте только путь к этому файлу (например, name="configUrl" value="config/player.json").
- Пусть объект сам загрузит конфигурацию по этому пути.
Как безопасно отключить использование param и object в старом проекте
Делать это нужно поэтапно, чтобы не сломать функциональность.
Инструкция:
- Найдите все места с object и param.
- Для каждого такого блока определите, что он делает (видео, графика, интерактив).
- Подберите современную альтернативу (video, iframe, JS-виджет).
- Сначала добавьте альтернативу как fallback внутри object.
- Затем, когда убедитесь, что новая реализация работает у всех целевых пользователей, уберите object и param.
Постройте личный план изучения Html до уровня Middle — бесплатно!
Html — часть карты развития Frontend
100+ шагов развития
30 бесплатных лекций
300 бонусных рублей на счет
Все гайды по Html
Лучшие курсы по теме

HTML и CSS
Антон Ларичев
TypeScript с нуля
Антон Ларичев