用户事件后,Soundcloud自定义播放器不在移动safari上播放
Soundcloud custom player not playing on mobile safari after user event
这可能是这个问题的重复,但我需要一个如何使其工作的例子。以下内容适用于桌面浏览器,但不适用于移动safari(我正在iOS 6.1.2中进行测试)。
我读过很多关于移动safari需要用户交互来播放声音的文章,但这正是我在这里所做的:一个按钮点击触发功能来播放声音。
谁能给我指个正确的方向?<body>
<div class="container" style="padding:20px">
<div class="sixteen columns">
<input type="button" href="#" id="stream" class="big button" value="Stream It Again, Sam" onclick="playTrack()"/>
<div class="console"></div>
</div>
</div>
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script src="//connect.soundcloud.com/sdk.js"></script>
<script>
SC.initialize({
client_id: "MY-CLIENT-ID"
});
function playTrack(){
SC.stream("/tracks/293", {
useHTML5Audio: true,
preferFlash: false
}, function(sound) {
sound.play();
$('.console').text('button clicked');
});
}
</script>
</body>
在您的示例中,用户操作和播放声音的调用发生在不同的调用堆栈中。
你需要修改你的JS像这样:
SC.initialize({
client_id: "YOUR_CLIENT_ID"
});
var soundToPlay;
// first do async action
SC.stream("/tracks/293", {
useHTML5Audio: true,
preferFlash: false
}, function(sound) {
soundToPlay = sound;
document.querySelector('input').disabled = false;
});
function playTrack () {
soundToPlay.play();
}
这样在动作发生之前声音就被加载了(异步动作)(默认情况下按钮是禁用的),然后你可以播放它并直接调用它。
下面是一个工作示例- http://jsbin.com/esadon/1/edit
相关文章:
- 防止在移动Safari(iPad/iPhone)中长按/长按默认上下文菜单
- html视频javascript播放方法在移动Safari中不起作用
- 检测通过移动 Safari 中的 JavaScript 关闭浏览器选项卡
- 在移动 Safari 上向下拖动时,触摸事件停止触发 - iPad HTML5
- jQuery .play() 在移动 Safari 上不起作用
- 如何将Javascript事件附加到移动Safari后退按钮
- 移动safari浏览器的滚动问题
- 删除的DOM元素仍然显示在移动safari(iOS 5.1)中
- window.open()没有'无法在添加到主屏幕的移动Safari web应用程序中工作
- jQuery:jQuery.val()在移动Safari和Chrome中不起作用
- 来自第三方身份验证的 Firebase 身份验证数据在移动 safari iOS8 中始终为空
- Facebook移动Safari无法正常工作
- 当用户在移动 Safari 浏览器上离开页面时暂停声音
- jQuery 显示在移动 Safari 上的 标签上
- 在移动 Safari 中隐藏/显示内联 SVG 时遇到问题
- 移动 Safari 垂直滚动 - 如何在 Javascript 中检测窗口何时停止移动
- iOS 移动 Safari 服务工作进程缓存限制
- JavaScript DOM 在 touchmove 中的更改延迟到移动 Safari 上的滚动结束
- 移动 Safari 不接受 HTML5 Meter 输入值
- 移动 Safari 中的 HTML5 仪表