webView的拦截,js注入的一般方法

在开发中,难免会用到webview来,不管是纯粹展示内容还是为了缩短开发周期,涉及到交互,就有一些不舒服了。
下边就简单介绍一下常用的方法(这里用的是UIWebView不是WKWebView)
---------捕获点击--------
页面里的点击,都可以在webView的代理方法

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType

捕获到点击之后的url(request.URL),根据这个url来决定下一步你要做的处理。
返回值就是用来判断还要不要再加载webview。
来个🌰
判断点击的是不是电话

if ([[request.URL absoluteString] rangeOfString:@"tel"].location != NSNotFound) {
        NSArray *arr = [urlstr componentsSeparatedByString:@":"];
        if (arr[1]) {
            NSString * strPho = arr[1];
            NSMutableString * str=[[NSMutableString alloc] initWithFormat:@"telprompt://%@",strPho];
            [[UIApplication sharedApplication] openURL:[NSURL URLWithString:str]];
            return NO;//注意这里的返回值,在某一个判断中,如果需要跳转你自己的界面,返回NO,如果是你想获得到一些信息,不影响webView的加载,可以返回YES
        } 
    }

在代理方法的最后,一定要返回YES,不然,你的界面就不会再加载了。
注意这里的UIWebViewNavigationType,如果需要,你可以用捕获的url和UIWebViewNavigationType一起来做判断。
---------注入js--------
注入js,通过js中的函数来获取返回结果都是这个方法(一般我是在weibView的加载完成的方法里注入js)

[web stringByEvaluatingJavaScriptFromString:<#(nonnull NSString *)#>];

来个🌰

static  NSString * const jsFunction = @"
function getImgs(){\
var objs = document.getElementsByTagName(\"img\");\
return objs;\
};"
[webView stringByEvaluatingJavaScriptFromString:jsFunction];//注入js方法

返回的结果,可以这样得到

NSArray *imgAry = [webView stringByEvaluatingJavaScriptFromString:@"getImgs()"];//得到js方法的返回结果

如果你用过swift来编程,看到js语法应该很熟悉,函数式编程,你一定会爱上swift的,有兴趣的同学不妨尝试一下。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,225评论 4 61
  • 以下是我临摹的海报,画的太走心忘记拍步骤图,请谅解。谢谢😄。 薄荷蓝的夏天 夜空繁星点点, 思念绵延不绝, 这是想...
    杨玉琳阅读 2,515评论 2 7
  • 看完很想很想你之后,又想去古风圈逛逛了(^∇^*)
    辰情阅读 1,644评论 0 0
  • 孤独的像个鬼 你知道吗? 一个人其实真的很孤单,你每天看着马路上人来人往的人群,虽然你站在马路中央,但那些人就跟没...
    林哈哈哈阅读 3,693评论 0 0
  • 我家养了几条小金鱼,我经常注意观察它们,金鱼在水里快活的游来游去,它们的眼睛是凸出来的,像是要掉下来,看它们胖墩...
    瑞恒瑞阅读 3,047评论 0 17