我有一个具有音效的HTML5网络应用。我试图让这些效果在iOS5中运行,并且不能用于我的生活。
想知道是否有人在iOS5中有任何解决方法来控制HTML5音频/视频控制。
甚至可以通过一次点击控制多个音频文件。就目前而言,如果我有10个音效,我需要10个用户点击才能控制所有这些音效,这是 荒谬 !
答案 0 :(得分:7)
荒谬,但你必须从iPhone或任何手机的角度看它。这是一部带有带宽限制的移动电话通过蜂窝网络,许多人从最近的Sprint商业广告中了解到这一点。他们不希望用户超过他们的带宽限制,因为某些网站正在向他们的手机发送大量数据而他们自己不采取行动。
以下是官方Safari Developer Library的详细摘录。
通过蜂窝网络进行下载的用户控制
在iOS上的Safari(适用于所有设备,包括iPad)中,用户可以使用 在蜂窝网络上,按数据单位收费,预加载和 自动播放被禁用。在用户启动数据之前不会加载任何数据。 这意味着JavaScript play()和load()方法也处于非活动状态 直到用户启动播放,除非是play()或load()方法 由用户操作触发。换句话说,用户发起的播放 按钮工作,但onLoad =“play()”事件不起作用。
这将播放电影:
<input type="button" value="Play" onClick="document.myMovie.play()">
这在iOS上没有任何作用:
<body onLoad="document.myMovie.play()">
答案 1 :(得分:6)
由于Apple,他们限制了自动播放功能以防止小区数据费用。在xcode4中,我添加了一个解决方法。在你的“webViewDidFinishLoad”发送一个javascript调用自动播放视频,它的工作原理。我在常规javascript的html文件中尝试了这个,但它没有用。通过webViewDidFinishLoad这样做可以做到这一点。在此示例中,我想在index.html页面上自动播放视频。我在该页面上有一个名为startVideo()的javascript函数。
- (void)webViewDidFinishLoad:(UIWebView *)webView{
NSURLRequest* request = [webView request];
NSString *page = [request.URL lastPathComponent];
if ([page isEqualToString:@"index.html"]){
NSString *js = @"startVideo();";
[myWebMain stringByEvaluatingJavaScriptFromString:js];
}
}
这是我的javascript函数:
<script>
function startVideo(){
var pElement3 = document.getElementById('myVideo');
pElement3.play();
}
</script>
这是html,以防你是html视频的新手
<video id="myVideo" poster="index_poster.png" width="1024" height="768" xcontrols autoplay="autoplay">
<source src="flow.m4v" type="video/mp4"/>
browser not supports the video
</video>
答案 2 :(得分:0)
你尝试过这样的事吗?
function clickedOnce(){
$('audio').each(function(){
this.play();
});
}