当我们的WebView不显示在最高层的时候,例如push了一个新的ViewController或者pop掉了当前的ViewController以后,常常我们需要停止音视频的播放~
比较常见的方法,在需要停止的时候通过webview加载一个空页面来达到停止播放的效果,代码如下:
[webview loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"about:blank"]]];
这种方法简单干脆直接了事,在popViewController/dismissViewController的时候很爽,好使,但是当pushViewController/presentViewController以后再返回webview就是一个大白屏了~
所以我们有了更好的解决方案 先上代码解解馋:
// 停止视频播放
[webview stringByEvaluatingJavaScriptFromString:
@"var videos = document.getElementsByTagName('video');\
for (var i=0;i < videos.length;i++){\
videos[i].pause();\
}"];
// 停止音频播放
[webview stringByEvaluatingJavaScriptFromString:
@"var audios = document.getElementsByTagName('media');\
for (var i=0;i < audios.length;i++){\
audios[i].pause();\
}"];
原理:通过JS直接控制网页中的 video/media标签
好了,至此结束~
网友评论