Если ни один из тегов
, предоставленных для тега HTML5, не воспроизводится, я хочу отобразить ошибку.
В соответствии с этой страницей в Mozilla Developer Network кажется, что мне нужно проверить свойство networkState элемента video, чтобы увидеть, загружены ли какие-либо источники, поскольку каждый отдельный тег источника генерирует свою собственную ошибку, когда он не удается загрузить.
Чтобы определить, что все дочерние элементы не удалось загрузить, проверьте значение атрибута networkState медиа-элемента. Если это HTMLMediaElement.NETWORK_NO_SOURCE, вы знаете, что все источники не удалось загрузить.
Но в какой момент я должен проверить networkState? Если я немедленно проверяю вызов video_tag.load (), он всегда сообщает мне, что networkState - NETWORK_NO_SOURCE, даже если исходные элементы действительны и видео воспроизводится нормально. Поэтому я полагаю, что мне нужно подождать, пока исходные теги не будут проверены браузером.
Вот тест:
var state = this._video_tag.networkState;
console.log( 'networkState', state );
if( state == this._video_tag.NETWORK_NO_SOURCE )
{
throw new Error( 'No valid sources' );
}
Я перепробовал все следующие события видеоэлемента с недопустимыми тегами источника: loadstart, Загруженные метаданные, загруженные данные и ошибка со следующими результатами (в Firefox):
- loadstart: вызвано, но networkState - NETWORK_LOADING
- загруженные метаданные: не называются
- загруженные данные: не называются
- ошибка: не вызывается
Однако, если я проверю видео тег в Firebug, networkState будет NETWORK_NO_SOURCE, как и ожидалось.
Какое событие я должен использовать, чтобы контролировать, когда проверять тег видео, или есть ли лучший способ сделать это?