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

标签 javascript safari html5-video dom-events 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 上)只是登录到控制台而不触发事件。

Failed to load resource: the server responded with a status of 403 (Forbidden)



如果我将 video.src 设置为无用但不会导致 403 的垃圾 URL,它将触发。

是否有其他我可以监听的事件或其他方式来警告用户?我知道我可能会为视频发出单独的 ajax 请求并检查响应,但我想避免开销。

最佳答案

这是 Webkit 中的一个错误。

我们通过在尝试加载视频之前首先发出 HEAD 请求来检查文件的状态来处理这个问题。添加往返,但通常非常快:

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

关于javascript - Safari 视频元素不会在 403 响应时触发错误事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21788138/

相关文章:

表中的 JavaScript 问题

javascript - 从自定义字符串中提取十六进制代码数据

ios - 通过Safari在iOS上安装ipa

jquery - 使用 HTML5 视频标签退出全屏

javascript - 触发 anchor ,打开模态框并转到模态框内的 anchor

Javascript 函数在 HTML 页面内工作,但在外部 .js 文件中不起作用

cordova - Safari Web 检查器为空白

javascript - 移动 safari : window. pageYOffset/scrollY 看似忽略导航栏高度,即使它滚动

html - 如何在 WP7 - Phonegap 中播放嵌入视频?

iphone - 在 HTML 5 网页中播放来自 iPad 的本地视频