3

Я пытаюсь загрузить видео с S3, которое может быть или не быть перекодировкой в ​​то время. Пока он все еще обрабатывается, я получаю ответ 403. Любой другой браузер Испытываю (Chrome/Firefox/IE) вызывает «ошибка» событие, так что я могу отобразить сообщение пользователю, как так:Элемент видео Safari не вызывает событие ошибки при ответе 403

var video = document.createElement('video'); 
video.onerror = function (e) { 
// Show the user a message... 
}; 
video.src = videoURL; 

Но Safari (на OSX) только входит в консоль, не вызывая событие.

Не удалось загрузить ресурс: сервер ответил со статусом 403 (Forbidden)

Это сработает, если я сделать video.src мусора URL, который ведет ни к чему, но это не делает для a 403.

Есть ли какое-то другое событие, которое я могу прослушать или другим способом предупредить пользователя? Я знаю, что мог бы сделать отдельный запрос ajax для видео и проверить ответ, но я бы хотел избежать накладных расходов.

ответ

0

Это ошибка в Webkit.

Мы обрабатываем это, сначала сделав запрос HEAD, чтобы проверить состояние файла, прежде чем пытаться загрузить видео. Добавляет туда-обратно, но обычно довольно быстро:

$.ajax({ 
    type: "HEAD", 
    url: video_filename, 
    success: loadVideo, 
    error: handleError 
}); 
Смежные вопросы