5

我正在创建一个基于 HTML5 的小型网站。在某些时候,我想播放声音。我正在播放这样的声音:

    sound = new Audio(url);
    sound.addEventListener("error", function(e) { 
               console.log("Logging playback error: " + e); });
    sound.load();
    sound.play();

发生错误时,我无法弄清楚e. 不幸的是,这个错误只发生在 iPad 上,所以我不能Firebug用来调试它。我在文档中没有找到参数的描述。

任何帮助,将不胜感激。

4

2 回答 2

7

我可能找到了那个错误消息对象。错误代码在sound.error.code或也e.currentTarget.error.code属性中,它可以包含以下 4 位数字之一:

MEDIA_ERR_ABORTED=1
MEDIA_ERR_NETWORK=2
MEDIA_ERR_DECODE=3
MEDIA_ERR_SRC_NOT_SUPPORTED=4

检查了它@jsfiddle

于 2012-07-30T16:30:44.057 回答
1

根据@Stano 的回答,我创建了一个函数,它将输出错误消息而不是代码号。它使用ES6 中的Object.keys()方法,但在撰写本文时(11/2019)已完全支持所有主要浏览器。

const getMediaErrorMessage = error => Object.keys(Object.getPrototypeOf(error.currentTarget.error)).find(key => error.currentTarget.error[key] === error.currentTarget.error.code);

这是一个展示函数用法的片段:

const getMediaErrorMessage = error => Object.keys(Object.getPrototypeOf(error.currentTarget.error)).find(key => error.currentTarget.error[key] === error.currentTarget.error.code);

const url = 'xxx';  // using wrong url, to get an error
const sound = new Audio(url);
sound.addEventListener('error', e => console.log(`Media error occurred: ${getMediaErrorMessage(e)}`));
sound.load();
sound.play();

于 2019-11-09T17:54:20.750 回答