美文网首页iOS假装进步
iOS - WKWebView点击链接跳转并获取新页面的URL

iOS - WKWebView点击链接跳转并获取新页面的URL

作者: ShIwEn9 | 来源:发表于2019-06-29 17:43 被阅读0次

在H5盛行的时代,在app当中难免需要去嵌套一些H5页面,作为iOS的“后生”
一开始就是用了WKWebView来实现H5页面的实现。😂

  • 其他相关:
    WKWebView的基本使用
    iOS - 获取WKWebView内容的高度并设置字体大小

  • 最近有一个需求:点击列表进入H5详情界面,上方的导航栏需要有分享和收藏,下方是H5界面,界面里面有一些链接可以点击,进入其他界面,其他界面也可以收藏和分享。

  • 需求分析:目前WKWebView不可以点击外部链接,需要做相应的设置,才可以跳转到下一个界面,点击链接时候如何获取URL,并且截取去新的详情对应的ID,用来设置分享和收藏功能。

所以主要的问题就是如何获取当前的点击事件,并得到URL;

既然确定好问题所在,那么只需要针对问题去解决它就好了。

查找资料发现:
-(void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler;
可以实现链接事件的拦截

具体代码如下:

- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void(^)(WKNavigationActionPolicy))decisionHandler {
    // 允许链接跳转
    decisionHandler(WKNavigationActionPolicyAllow);
    // 获取新页面的URL 
    NSString *url = navigationAction.request.URL.absoluteString;
    if (![url isEqualToString:self.urlString]) {
        //从字符A中分隔成2个元素的数组
        NSArray *array = [url componentsSeparatedByString:@"id="]; 
        NSLog(@"array:%@",array);
        // 改变页面的ID
        self.newsId = [NSString stringWithFormat:@"%@",array[1]] ;
        // 通过新ID重新获取页面数据
        [self initWithData] ;
        // 重新拼接路径 加载内容
        self.urlString = [NSString stringWithFormat:@"https://你的域名/homePage/news?platform=Ios&id=%@",self.newsId] ;
        [self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:self.urlString]]];
    }

这样就实现了基本需求:具体问题具体对待;但思路都差不多。
这样就结束了,如有不足的地方,请多多指教,谢谢。

⚠️ ⚠️ ⚠️ ⚠️ ⚠️ 求职:本人实习生,最近想换个工作环境,如果觉得我还可以的话,请向我留言,安徽,杭州,南京地区的都可以。。

相关文章

网友评论

    本文标题:iOS - WKWebView点击链接跳转并获取新页面的URL

    本文链接:https://www.haomeiwen.com/subject/pvbpcctx.html