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

问题描述 投票:3回答:1

我正在尝试从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设为垃圾URL,则该URL不会产生任何结果,但不会导致403。这会触发。

还有其他可以监听的事件,还是可以其他方式警告用户?我知道我可能可以对视频提出一个单独的ajax请求并检查响应,但我希望避免开销。

javascript safari html5-video dom-events http-status-code-403
1个回答
0
投票

这是Webkit中的错误。

我们会先尝试发送HEAD请求以检查文件状态,然后再尝试加载视频,以解决此问题。添加往返,但通常非常快:

$.ajax({
  type: "HEAD",
  url: video_filename,
  success: loadVideo,
  error: handleError
});
© www.soinside.com 2019 - 2024. All rights reserved.