您的位置:首页 > 移动开发

通过JavaScript钩子来获取UIWebView视频播放的状态

2015-10-05 21:14 423 查看
转自:http://blog.csdn.net/chenyong05314/article/details/42120917
http://dev.classmethod.jp/client-side/javascript/uiwebview-video-tag/
如有侵犯,请来信oiken@qq.com

场景是这样的

在UIWebview里面有一个视频,点击之后会弹出全屏的系统的视频播放器,这时候你可能需要在全屏的时候,或者在用户看完视频的时候需要做一些事情。
videofullscreenhandler.js

(function () {
var scheme = 'videohandler://';
var videos = document.getElementsByTagName('video');
for (var i = 0; i < videos.length; i++) {
videos[i].addEventListener('webkitbeginfullscreen', onBeginFullScreen, false);
videos[i].addEventListener('webkitendfullscreen', onEndFullScreen, false);
}
function onBeginFullScreen() {
window.location = scheme + 'video-beginfullscreen';
}
function onEndFullScreen() {
window.location = scheme + 'video-endfullscreen';
}
})();

在UIWebview的delegate里面做处理

#pragma mark - UIWebViewDelegate
- (void)webViewDidFinishLoad:(UIWebView *)webView {
NSString *videoHandlerString = [[NSBundle mainBundle] myVideoFullScreenHandlerJavaScriptString];
if (videoHandlerString) {
[webView stringByEvaluatingJavaScriptFromString:videoHandlerString];
}
}
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType  {
if ([request.URL.scheme isEqualToString:VideoHandlerScheme]) {
NSLog(@"%@", request.URL);//在这里可以获得事件
return NO;
}
return YES;
}

---------------------

日本人的文章讲得清楚些:

这个是得到播放和停止的通知

videoplayendhandler.js

MYWebViewController.m

这个是得到进入和退出全屏播放的通知

videofullscreenhandler.js

MYWebViewController.m

注意要吧uiwebView的参数
allowsInlineMediaPlayback
设置为YES,才会自动播放
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: