iOS关于webView交互使用(包含js)

来源:互联网 发布:开淘宝店对产品的要求 编辑:程序博客网 时间:2024/06/16 15:38

很久没有更新了,加班给加成汪汪了。

关于webView 和 wkWebView 其实太多争议,我也不参与争论,因为再争论也抵不过领导说用什么就用什么。

所以今天给大家来讲解一下它们两个跟js之间的交互

webView
1.截取url
其实用起来很简单,根据业务需求

- (BOOL)webView:(UIWebVie- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationTypew *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{  NSString *requestURL = [[request URL] absoluteString];  if ([requestURL rangeOfString:@"你跟js定义好的字段"].location != NSNotFound){}}

上面的那个方法是最简单 而且最有效的但是不好管理的一个方法,代码不整齐,而且不安全的方法。上面的方法的意思就让js跟商量好,它需要什么你在url后面带,或者它需要什么你在url后面带,然后用上面的这个方法截,然后办事儿。

2.WebViewJavascriptBridge

这个是比较方便,切比较安全可以在里面把你传的字符md5加密之后然后给html让他解密然后做事儿

如果需要js调取oc 那么oc需要写

    self.bridge = [WebViewJavascriptBridge bridgeForWebView:_webView webViewDelegate:self handler:^(id data, WVJBResponseCallback responseCallback) {        NSLog(@"%@",data);    }];//bridge  是你自己定义的bridge [self.bridge registerHandler:@"你们定义的方法名" handler:^(id data, WVJBResponseCallback responseCallback) {    }];

js需要写

  function setupWebViewJavascriptBridge(callback) {                if (window.WebViewJavascriptBridge) { return callback(WebViewJavascriptBridge); }                if (window.WVJBCallbacks) { return window.WVJBCallbacks.push(callback); }                window.WVJBCallbacks = [callback];                var WVJBIframe = document.createElement('iframe');                WVJBIframe.style.display = 'none';                WVJBIframe.src = 'wvjbscheme://__BRIDGE_LOADED__';                document.documentElement.appendChild(WVJBIframe);                setTimeout(function() { document.documentElement.removeChild(WVJBIframe) }, 0)            }
原创粉丝点击