заглушка для video source src
Ситуация: в зависимости от языка браузера (window.navigator.language) через js подключается нужный (или дефолтный) путь к видео на нужном языке . Проблема: 1) Если из изначальной разметки я убираю тег src или даю значение пустой строки я получаю ошибку валидации (validator.w3.org) . 2) Если я прописываю дефолтный путь то сначала пытается загрузится видео по дефолтному пути и потом меняется на путь согласно языка браузера и опять идет загрузка видео по новому пути - а я не хочу выполнять лишних операций т.е. загружать дефолтное видео а потом загружать нужное. Я хоу сразу определять и грузить видео по нужному пути. Таким образом мне нужна какая то заглушка, которая не вызовет ошибку валидации. А руть к видео будет формировать js.
Ответы (2 шт):
Можно указать заглушку вида src="data:,"
:
const videoElement = document.querySelector('video');
const sourceElement = videoElement.querySelector('source');
const lang = window.navigator.language || window.navigator.userLanguage;
var videoPath;
switch (lang) {
case 'en':
videoPath = '/english.mp4';
break;
case 'ru':
videoPath = '/ru.mp4';
break;
default:
videoPath = '/english.mp4';
break;
}
sourceElement.src = videoPath;
videoElement.load();
<video id="myVideo" preload="none">
<source src="data:," type="video/mp4">
</video>
Надо выпрямить или валидатор, или руки. Тег video
без src
валиден:
<!DOCTYPE html>
<html lang=ru>
<title>1</title>
<video></video>
Document checking completed. No errors or warnings to show.
PS: А тега src
вообще не существует - это атрибут. Есть тег source
- вот у него атрибут src
обязателен, но если ты хочешь использовать его (хотя и непонятно, зачем), то не пиши в разметке весь тег.