заглушка для video source src

Ситуация: в зависимости от языка браузера (window.navigator.language) через js подключается нужный (или дефолтный) путь к видео на нужном языке . Проблема: 1) Если из изначальной разметки я убираю тег src или даю значение пустой строки я получаю ошибку валидации (validator.w3.org) . 2) Если я прописываю дефолтный путь то сначала пытается загрузится видео по дефолтному пути и потом меняется на путь согласно языка браузера и опять идет загрузка видео по новому пути - а я не хочу выполнять лишних операций т.е. загружать дефолтное видео а потом загружать нужное. Я хоу сразу определять и грузить видео по нужному пути. Таким образом мне нужна какая то заглушка, которая не вызовет ошибку валидации. А руть к видео будет формировать js.


Ответы (2 шт):

Автор решения: Serafim MMM

Можно указать заглушку вида 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>

→ Ссылка
Автор решения: Qwertiy

Надо выпрямить или валидатор, или руки. Тег 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 обязателен, но если ты хочешь использовать его (хотя и непонятно, зачем), то не пиши в разметке весь тег.

→ Ссылка