最新消息:文章中包含代码时,请遵守代码高亮规范!

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

iOS user 2193浏览 0评论

在H5盛行的时代,在app当中难免需要去嵌套一些H5页面,作为iOS的“后生”

一开始就是用了WKWebView来实现H5页面的实现。

* 最近有一个需求:点击列表进入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]

]];     }

这样就实现了基本需求:具体问题具体对待;但思路都差不多。

转载时请注明出处及相应链接,本文永久地址:/25424.html


pay_weixin
pay_weixin
微信打赏
pay_weixin
支付宝打赏
感谢您对作者Miya的打赏,我们会更加努力!    如果您想成为作者,请点我

发表我的评论
取消评论

表情