关于 iOS 的 WebView 播放视频/音频无法停止的解决方案

当我们的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标签
好了,至此结束~

推荐阅读更多精彩内容