美文网首页iOS Developer
webView的拦截,js注入的一般方法

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

作者: revon | 来源:发表于2016-12-14 17:28 被阅读842次

在开发中,难免会用到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的,有兴趣的同学不妨尝试一下。

相关文章

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

    在开发中,难免会用到webview来,不管是纯粹展示内容还是为了缩短开发周期,涉及到交互,就有一些不舒服了。下边就...

  • iOS原生与JS交互最新版

    JS调iOS方法 UIWebView Swift方法同理 WebView代理中拦截Url跳转 WKWebView ...

  • chrome插件添加ajax拦截功能

    前言 通过chrome插件的注入js脚本的功能,重写XMLHttpRequest方法,从而实现拦截ajax功能。 ...

  • iOS8 webView与JS交互 拦截协议无效不走代理方法的b

    webView与js交互有很多方法。其中一种比较古老简单的方法是在webView的代理中拦截URL协议,进行接下来...

  • webView

    //设置背景透明[_webview setOpaque:NO]; 注入JS

  • ios bridge原理

    // 消息请求拦截 先来说说JS调用iOS:在HTML加载完毕时注入 JS对象jsObj,当JS调用相应方法时候由...

  • WKWebView禁止用力按弹出菜单

    真的,在网上找了一堆方法,都说要注入JS,我怎么注入都没用后来找到了以下方法: self.webView.allo...

  • js

    0, 你需要懂点这些: 1, oc 给 webView添加js, 调用所添加的方法 2, oc 拦截close 方...

  • 14-3 iOS 与H5

    执行一段js代码 2.注入监听方法不是方法 3.获取文字 4.获取WebView加载的HTML 5.JS调用iOS...

  • javascriptIOS互调

    1、URL拦截方式js-》ocWKWebView的- (void)webView:(WKWebView *)web...

网友评论

    本文标题:webView的拦截,js注入的一般方法

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