【发布时间】:2015-10-15 20:55:44
【问题描述】:
我正在使用自定义<audio> 播放器的插件,一切都很好。我在 Mac OSX 10.8.2 上的 Safari 浏览器中工作,一旦我决定在其他浏览器中测试项目,事情就变得很奇怪。简而言之,插件应该在页面中找到<audio> 标签,然后将它们更改为不同的自定义标记。在 safari 中运行良好,但在 firefox 和 opera 中似乎无法运行
Firefox 和 Opera 存在以下问题,插件中有一部分,如果音频源的格式不受支持,则会创建不同的(迷你)播放器,这基本上是旧浏览器的后备,但我不知道如何firefox 和 opera 展示了这个后备播放器,因为它们都是非常现代的浏览器。
插件最初来自:http://tympanus.net/codrops/2012/12/04/responsive-touch-friendly-audio-player/ 但是我做了一些更改,例如
canPlayType = function( type )
{
var audioElement = document.createElement( 'audio' );
return !!( audioElement.canPlayType &&
audioElement.canPlayType( 'audio/' + type.toLowerCase() + ';' ).replace( /no/, '' ) );
};
原来是
canPlayType = function( file )
{
var audioElement = document.createElement( 'audio' );
return !!( audioElement.canPlayType &&
audioElement.canPlayType( 'audio/' + file.split( '.' ).pop().toLowerCase() + ';' ).replace( /no/, '' ) );
};
还有一个小改动
else if( canPlayType( 'mp3' ) ) isSupport = true;
原件在哪里
else if( canPlayType( audioFile ) ) isSupport = true;
这些修改是为了指定 src 中的文件是 mp3,而不是自动检测它(因为我没有使用本地文件,而是 soundcloud api 生成的 url)。我看不出这些更改如何影响浏览器无法使用插件。由于涉及的代码文件很多,我没有将它们全部发布在这里,而是创建了一个 dropbox 文件夹供您自己在这里查看,您可以在不同的浏览器中尝试 index.html 文件,这样您就可以看到我的问题谈论: https://www.dropbox.com/sh/xutioz3hyrybvz3/f0-528WzH0
编辑:我还在 jsbin http://jsbin.com/unupov/1/edit 上创建了一个现场演示,这样你就可以看到播放器在不同浏览器中的行为
编辑 2: 忽略 chrome 的问题,感谢 user20140268 这些问题已得到修复。
【问题讨论】:
标签: javascript jquery html jquery-plugins soundcloud