audio onError参数

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

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

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

[发生错误时,我无法弄清楚e中的内容。不幸的是,该错误仅在iPad上发生,因此我无法使用Firebug对其进行调试。我在文档的任何地方都找不到该参数的描述。

任何帮助将不胜感激。

javascript html5
2个回答
3
投票

我可能发现了error消息对象。错误代码在sound.error.codee.currentTarget.error.code属性中,并且可以包含以下4位数字之一:

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

examined it @jsfiddle


0
投票

基于@Stano answer,我创建了一个函数,该函数将输出错误消息而不是代码号。它使用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();
© www.soinside.com 2019 - 2024. All rights reserved.