通过JavaScript钩子来获取UIWebView视频播放的状态
来源:互联网 发布:红警模型淘宝 编辑:程序博客网 时间:2024/05/16 17:25
转自: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
(
function
() {
var
scheme =
'videohandler://'
;
var
videos = document.getElementsByTagName(
'video'
);
for
(
var
i = 0; i < videos.length; i++) {
videos[i].addEventListener(
'play'
, onPlay,
false
);
videos[i].addEventListener(
'ended'
, onEnded,
false
);
}
function
onPlay() {
window.location = scheme +
'video-play'
;
}
function
onEnded() {
window.location = scheme +
'video-ended'
;
}
})();
MYWebViewController.m
/**
* ビデオハンドラのためのダミーURLスキーム
*/
static
NSString
*
const
VideoHandlerScheme =
@"videohandler"
;
#pragma mark - Lifecycle methods
- (
void
)viewDidLoad
{
[
super
viewDidLoad];
NSString
*htmlString =
[[
NSBundle
mainBundle] myVideoPageHTMLString];
[
self
.webView loadHTMLString:htmlString
baseURL:[[
NSBundle
mainBundle] bundleURL]];
}
#pragma mark - UIWebViewDelegate
- (
void
)webViewDidFinishLoad:(UIWebView *)webView
{
NSString
*videoHandlerString =
[[
NSBundle
mainBundle] myVideoPlayEndHandlerJavaScriptString];
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
;
}
这个是得到进入和退出全屏播放的通知
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'
;
}
})();
MYWebViewController.m
#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
;
}
注意要吧uiwebView的参数allowsInlineMediaPlayback
设置为YES,才会自动播放
0 0
- 通过JavaScript钩子来获取UIWebView视频播放的状态
- 通过UIWebView获取 m3u8的播放地址
- 使用 UIWebView 来播放视频
- UIWebView 通过JS控制页面视频播放
- Android中通过网络获取json数据来播放视频
- Android中通过网络获取json数据来播放视频
- 播放与暂停UIWebView中视频,并获取的长度与播放进度,
- 监听UIWebView点击视频播放的事件
- ios 编程: ipad 和 iphone开发中使用 UIWebView 来播放视频的时候,在页面切换时 停止播放
- ios 编程: ipad 和 iphone开发中使用 UIWebView 来播放视频的时候,在页面切换时 停止播放
- UIWebView 播放视频
- 求教 UIWebview播放视频
- iOS开发——获取UIWebView中视频的长度与播放进度等信息
- iOS开发——获取UIWebView中视频的长度与播放进度等信息
- iOS开发——获取UIWebView中视频的长度与播放进度等信息
- iOS开发——获取UIWebView中视频的长度与播放进度等信息
- 通过NSURLProtocol来做UIWebView的cache
- vlc_android中获取视频播放状态
- 文本分类入门(四)训练Part 1
- C#学习日记13---类(Class)的声明与定义
- 学习java前的热身--常见DOS命令
- MQTT的简单应用
- ios-打电话
- 通过JavaScript钩子来获取UIWebView视频播放的状态
- 【JAVA】---抽象类和接口的不同
- matlab中的subplot函数
- C++:标准库类型(string、vector、list、bitset)
- 挖掘频繁项集之FP-Growth算法
- UVA_1592: Database
- Android Notivation的使用
- Android 获取服务器数据解析Text数据,存在htmel标签的处理办法
- iOS UITableView