Html5音频获胜'当源代码通过JavaScript填充时,t在safari中播放
Html5 audio won't play in safari when the source is populated via JavaScript
我正在Rails应用程序中构建播放列表,在Safari中播放音频时遇到了一些问题。如果html5音频元素的源代码是硬编码的,它在safari中播放得很好,但当它通过javascript填充时,它不会播放。这在Chrome和IE中运行良好,但在Safari中则不然。
以下是播放列表条目的Ruby:
.playlist_column
-@music_posts.each do |post|
.entry{:id => post.id, :data => {:post_id => post.id, :source => post.mp3.url}}
这是音频元素,预装了第一首曲目的来源:
.playlist_player
%audio{:controls => "controls", :id => @music_posts.first.id}
%source{:src => @music_posts.first.mp3.url, :type => "audio/mp3"}
这是JavaScript:
$(".entry").click(function(){
var current_entry = $(this);
var this_track = current_entry.data("source");
var audio = $("audio").get(0);
var audio_source = $("audio source");
audio_source.attr("src", this_track);
audio.load();
audio.play();
});
当我在safari中检查音频元素时,它看起来和它应该的一模一样,有正确的来源:
<audio controls="controls" id="7">
<source src="http://s3.amazonaws.com/blog/posts/5/song/07%20-%20Young%20Blood.mp3?1328052011" type="audio/mp3">
</audio>
但它不会播放,我没有看到任何错误,任何想法?提前谢谢。
查看现有源元素上src属性的HTML规范:
注意:当源元素已经插入到视频或音频元素中时,动态修改该元素及其属性将无效。要更改正在播放的内容,只需直接使用media元素上的src属性,可以使用canPlayType()方法从可用资源中进行选择。通常,在解析文档后手动操作源元素是一种不必要的复杂方法。
既然你(理论上)知道音频文件类型是可以播放的,你就可以做
var audio = $("audio").get(0);
audio.src = this_track;
audio.load();
audio.play();
我刚刚在Safari中测试了它,它似乎工作正常。
type => "audio/mpeg"
这应该可以解决问题。建议-请为音频元素提供id,并在jQuery中使用它,而不是标记名称。
相关文章:
- 如何播放部分音频文件
- 如何设置html元素填充的动画
- 如何使用jquery在填充自动完成的值后使文本框只读
- 如何通过ajax刷新JSF填充的javascript变量
- HTML5音频加载和播放获胜'我不能在iPad上工作
- 播放当前视频时如何停止其他视频?JavaScript
- 制作一个不带HTML a标记但在动画播放完毕后指向其他页面的超链接
- 用与线条相同的颜色填充多折线图上的点
- 用每小时的差值填充数组/列表-从下拉列表中给定两个时间值
- 带有填充属性的SVG矩形显示在包含元素的上方插入框阴影
- 用我的json数据填充JQuery DataTable
- 是否可以使用iframe API在iOS浏览器上播放youtube视频
- 使用 jQuery 检查所有值是否为空或已填充
- 为什么不't我的变量在我的控制器中填充后在我的视图中呈现
- 如何检查用户在html5视频播放器中观看了完整的视频
- tiltSlider播放/暂停视频元素(如果li有当前类)
- 使用JSON检索PHP数组,并使用javascript中的数组来填充播放列表
- SPOTIFY APP API:向播放列表项.sp-item/更改views.js中的item_HEIGHT属性添加填充
- Html5音频获胜'当源代码通过JavaScript填充时,t在safari中播放
- 创建并填充临时播放列表Spotify应用程序