一、移动端与前端的交互中,常需要获取html页面的内容、标题等信息
1.UIWebView
可以在UIWebViewDelegate的
- (void)webViewDidFinishLoad:(UIWebView *)webView 方法中获取相关内容,实例代码如下
- (void)webViewDidFinishLoad:(UIWebView *)webView {
//获取所有的html
NSString *htmlContent = @"document.documentElement.innerHTML";
//获取网页title
NSString *htmlTitle = @"document.title";
//获取网页的一个值
NSString *htmlNumber = @"document.getElementById('title').innerText";
//获取到得网页内容
NSString *htmlContentInfo = [webView stringByEvaluatingJavaScriptFromString:htmlContent];
NSLog(@"%@",htmlContentInfo);
NSString *titleHtmlInfo = [webView stringByEvaluatingJavaScriptFromString:htmlTitle];
NSLog(@"%@",titleHtmlInfo);
NSString *numberHtmlInfo = [webView stringByEvaluatingJavaScriptFromString:htmlNumber];
NSLog(@"%@",numberHtmlInfo);
}
2.WKWebView
WKWebView 有 title 属性可直接获取网页标题,
NSString *title = webView.title;
可通过 KVO 方式获取网页标题的动态变化。
[webView addObserver:self forKeyPath:NSStringFromSelector(@selector(title)) options:NSKeyValueObservingOptionNew context:NULL];
二、html页面多媒体内容的播放处理
1.UIWebView
[self.webView setMediaPlaybackRequiresUserAction:NO]; //允许自动播放
1.WKWebView
WKWebViewConfiguration *config = [[WKWebViewConfiguration alloc] init];
config.allowsInlineMediaPlayback = YES;
config.mediaPlaybackRequiresUserAction = false;
displayWebView=[[WKWebView alloc] initWithFrame:rect configuration:config];
displayWebView.UIDelegate=self;
displayWebView.navigationDelegate=self;
UIWebView音视频的播放与暂停
参考资料:http://www.itstrike.cn/Question/7823dee3-ccbd-4039-8f5e-f8289d43a178.html
// [_webView stringByEvaluatingJavaScriptFromString: @"document.querySelector('audio').pause();"];
//经测试以下代码可行
[_webView stringByEvaluatingJavaScriptFromString: @"var audioPlayer = document.querySelector('audio');\
if (audioPlayer.paused) \
{ \
audioPlayer.play(); \
} \
else \
{ \
audioPlayer.pause(); \
} \
"];
当然这只会停止第一个视频,等等 iPad 脚本需要稍微有点复杂和循环遍历页面上的所有视频。
var videos = document.querySelectorAll("video");
for (var i = videos.length - 1; i >= 0; i--){
videos[i].pause();
};