我正在创建一个基于HTML5的小网站。在某些时候我想播放声音。我正在播放这样的声音:
sound = new Audio(url);
sound.addEventListener("error", function(e) {
console.log("Logging playback error: " + e); });
sound.load();
sound.play();
发生错误时,我无法弄清e
中的内容。不幸的是,错误仅发生在iPad上,因此我无法使用Firebug
进行调试。我没有在文档中找到参数的描述。
任何帮助都将不胜感激。
答案 0 :(得分:3)
我可能找到了error消息对象。错误代码位于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
答案 1 :(得分:0)
基于@Stano answer,我创建了一个函数,该函数将输出错误消息而不是代码号。它使用ES6中的Object.keys()方法,但在撰写本文时(2019年11月11日)已在所有主流浏览器中提供全面支持。
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();