Safari视频元素不会在403响应上触发错误事件

时间:2014-02-14 19:39:53

标签: javascript javascript-events safari html5-video http-status-code-403

我正在尝试加载来自S3的视频,当时可能会也可能不会转码。虽然它仍在处理,但我收到了403响应。我测试的每个其他浏览器(Chrome / Firefox / IE)都会触发“错误”事件,因此我可以像这样向用户显示消息:

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

但是Safari(在OSX上)只是在不触发事件的情况下登录到控制台。

  

无法加载资源:服务器响应状态为403(禁止)

如果我将video.src设为一个垃圾网址,它会导致什么,但不会导致403。

是否还有其他可以收听的事件或其他方式来警告用户?我知道我可以为视频制作一个单独的ajax请求并检查响应但是我想避免开销。

1 个答案:

答案 0 :(得分:0)

这是Webkit中的一个错误。

我们通过首先发出HEAD请求来检查文件的状态,然后再尝试加载视频。添加往返,但通常很快:

$.ajax({
  type: "HEAD",
  url: video_filename,
  success: loadVideo,
  error: handleError
});