码迷,mamicode.com
首页 > 移动开发 > 详细

iOS 利用UIWebView与JavaScript交互的最简单办法(本人已验证可行)

时间:2014-06-08 16:54:38      阅读:211      评论:0      收藏:0      [点我收藏+]

标签:android   c   style   blog   java   a   


网上说的很多针对Mac OS X的,还有很多都是复制”朱祁林“的贴子的,绝大多数人是没有经过验证的,

看清楚了,这里说的是针对iOS的!并且方法很简单!!并且验证可行的!!!


1, UIWebView调用 JavaScript 的函数:

NSString* strValue = [webView stringByEvaluatingJavaScriptFromString:@"YourFunctionName(‘YourParameter‘)"];

上面这句就是调用 JavaScript里面自定义的函数 YourFunctionName(传入参数‘YourParameter‘,取得返回值赋给strValue )


2,JavaScript (通过UIWebView)调用ObjC方法:

下面说到的是最简单、最通用的办法!!脚本写完之后可以丢到Android执行的:

就是利用UIWebView(Android的是WebView)拦截URL的功能!!!约定一个特殊URL,写在脚本,让上层去拦截分析!!比如,

在JavaScript写上:

window.location.href = "ABCD://XXXYYYZZZ"


在iOS里面:

实现UIWebViewDelegate下面这个函数(不要忘记设置 webView.delegate = self 这样细节)

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

{

          NSString* strXXX = request.URL.resourceSpecifier;

          //假设只是分析 "ABCD://"

            NSRange range = [strXXX rangeOfString:@"ABCD://"];
             if( range.location != NSNotFound )
             {
                    //就在这里执行操作了!!!

            
                   return NO;//返回NO,表示取消对本次请求的导航

              }

        return YES;

}


//Android里面,利用WebView 重载这个函数也可以做到同样效果

public boolean shouldOverrideUrlLoading(WebView  view, String url) { 

return true;
}


这样,当JavaScript执行window.location.href = "ABCD://XXXYYYZZZ"这句,就触发上层的对应操作了!

也就是实现JavaScript调用上层ObjC函数的功能了


转载请注明出处:http://blog.csdn.net/h_o_w_e/article/details/28887005

iOS 利用UIWebView与JavaScript交互的最简单办法(本人已验证可行),布布扣,bubuko.com

iOS 利用UIWebView与JavaScript交互的最简单办法(本人已验证可行)

标签:android   c   style   blog   java   a   

原文地址:http://blog.csdn.net/h_o_w_e/article/details/28887005

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!