當(dāng)我們的WebView不顯示在最高層的時(shí)候,例如push了一個(gè)新的ViewController或者pop掉了當(dāng)前的ViewController以后,常常我們需要停止音視頻的播放~
比較常見(jiàn)的方法,在需要停止的時(shí)候通過(guò)webview加載一個(gè)空頁(yè)面來(lái)達(dá)到停止播放的效果,代碼如下:
[webview loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"about:blank"]]];
這種方法簡(jiǎn)單干脆直接了事,在popViewController/dismissViewController的時(shí)候很爽,好使,但是當(dāng)pushViewController/presentViewController以后再返回webview就是一個(gè)大白屏了~
所以我們有了更好的解決方案 先上代碼解解饞:
// 停止視頻播放
[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();\
}"];
原理:通過(guò)JS直接控制網(wǎng)頁(yè)中的 video/media標(biāo)簽
好了,至此結(jié)束~