iOS WKWebView高度自适应以及截获页面点击的url
2017-02-24 11:21
537 查看
首先来看下UIWebView的做法:
UIWebView *webView = [[UIWebViewalloc]initWithFrame:CGRectMake(0,0,WIDTH,0)];
webView.delegate =self;
[self.viewaddSubview:webView];
[webView loadHTMLString:html/*html内容*/ baseURL:nil];
-(void)webViewDidFinishLoad:(UIWebView*) webView {
//获取页面高度,并重置webview的frame
CGFloat documentHeight = [[webViewstringByEvaluatingJavaScriptFromString:@"document.getElementById(\"content\").offsetHeight;"]floatValue];
CGRect frame = webView.frame;
frame.size.height = documentHeight;
webView.frame = frame;
}
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
NSString* strRequest = request.URL.absoluteString;
if([strRequestisEqualToString:@"about:blank"]) {//主页面加载内容
returnYES;//允许跳转
} else {//截获页面里面的链接点击
//do something you want
returnNO;//不允许跳转
}
}
在来对应看下WKWebView:
WKWebView *wkWebview = [[WKWebView alloc] initWithFrame:CGRectMake(0, 0, WIDTH, 0)];
wkWebview.navigationDelegate = self;
[self.view wkWebview];
[wkWebview loadHTMLString:html/*html内容*/ baseURL:nil];
- (void)webView:(WKWebView *)webView didFinishNavigation:(null_unspecifiedWKNavigation *)navigation
{
[webView evaluateJavaScript:@"document.getElementById(\"content\").offsetHeight;"completionHandler:^(id_Nullableresult,NSError *_Nullable error)
{
//获取页面高度,并重置webview的frame
CGFloat documentHeight = [resultdoubleValue];
CGRect frame = webView.frame;
frame.size.height = documentHeight;
webView.frame = frame;
}];
}
// 类似 UIWebView的 -webView: shouldStartLoadWithRequest: navigationType:
- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction*)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler
{
NSString *strRequest = [navigationAction.request.URL.absoluteStringstringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
if([strRequestisEqualToString:@"about:blank"]) {//主页面加载内容
decisionHandler(WKNavigationActionPolicyAllow);//允许跳转
} else {//截获页面里面的链接点击
//do something you want
decisionHandler(WKNavigationActionPolicyCancel);//不允许跳转
}
}
高度自适应代码下载链接:http://download.csdn.net/detail/luco2008/9502733
UIWebView *webView = [[UIWebViewalloc]initWithFrame:CGRectMake(0,0,WIDTH,0)];
webView.delegate =self;
[self.viewaddSubview:webView];
[webView loadHTMLString:html/*html内容*/ baseURL:nil];
-(void)webViewDidFinishLoad:(UIWebView*) webView {
//获取页面高度,并重置webview的frame
CGFloat documentHeight = [[webViewstringByEvaluatingJavaScriptFromString:@"document.getElementById(\"content\").offsetHeight;"]floatValue];
CGRect frame = webView.frame;
frame.size.height = documentHeight;
webView.frame = frame;
}
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
NSString* strRequest = request.URL.absoluteString;
if([strRequestisEqualToString:@"about:blank"]) {//主页面加载内容
returnYES;//允许跳转
} else {//截获页面里面的链接点击
//do something you want
returnNO;//不允许跳转
}
}
在来对应看下WKWebView:
WKWebView *wkWebview = [[WKWebView alloc] initWithFrame:CGRectMake(0, 0, WIDTH, 0)];
wkWebview.navigationDelegate = self;
[self.view wkWebview];
[wkWebview loadHTMLString:html/*html内容*/ baseURL:nil];
- (void)webView:(WKWebView *)webView didFinishNavigation:(null_unspecifiedWKNavigation *)navigation
{
[webView evaluateJavaScript:@"document.getElementById(\"content\").offsetHeight;"completionHandler:^(id_Nullableresult,NSError *_Nullable error)
{
//获取页面高度,并重置webview的frame
CGFloat documentHeight = [resultdoubleValue];
CGRect frame = webView.frame;
frame.size.height = documentHeight;
webView.frame = frame;
}];
}
// 类似 UIWebView的 -webView: shouldStartLoadWithRequest: navigationType:
- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction*)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler
{
NSString *strRequest = [navigationAction.request.URL.absoluteStringstringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
if([strRequestisEqualToString:@"about:blank"]) {//主页面加载内容
decisionHandler(WKNavigationActionPolicyAllow);//允许跳转
} else {//截获页面里面的链接点击
//do something you want
decisionHandler(WKNavigationActionPolicyCancel);//不允许跳转
}
}
高度自适应代码下载链接:http://download.csdn.net/detail/luco2008/9502733
相关文章推荐
- iOS WKWebView高度自适应以及截获页面点击的url
- iOS-获取UIWebView或者WKWebView页面的左右图片链接,点击查看大图
- iOS-获取UIWebView或者WKWebView页面的左右图片链接,点击查看大图
- iOS webView以及WKWebView计算高度慢,加快加载速度等问题
- 完美方案——iOS的WebView自适应内容高度
- 完美解决iOS的WebView自适应内容高度问题
- iOS开发-- 开发细节(webView自适应高度)
- ios webview自适应实际内容高度4种方法
- UIWebView自适应高度,适合一个页面多个WebView
- iOS-WKWebView特性以及与JS交互的一些事
- iOS计算UIWebView的高度和iOS8之后的WKWebView的高度问题
- 完美方案——iOS的WebView自适应内容高度--推酷
- ios 点击webview获取图片url (js交互)
- iOS webView 和 H5 页面交互(点击获取H5页面中的按钮,做自己想做的操作)
- iOS WebView自适应内容高度
- webView点击打开其他的页面iOS
- iOS storyboard约束 4000 加载webView自适应高度
- iOS webview自适应实际内容高度的4种方法
- 【IOS学习笔记】为UICollectionView设置自适应屏幕宽度以及点击效果
- ios webview自适应实际内容高度4种方法