`
annan211
  • 浏览: 445489 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

js 传值给 IOS

 
阅读更多

定义js方法

function callOC(func,param){
        var iframe = document.createElement("iframe");
        var url= "myapp:" + "&func=" + func;
        for(var i in param)
        {
            url = url + "&" + i + "=" + param[i];
        }
        iframe.src = url;
        iframe.style.display = 'none';
        document.body.appendChild(iframe);
        iframe.parentNode.removeChild(iframe);
        iframe = null;
}


调用js方法

 <a  onclick="callOC('prodId',{'prodId':${pro.prodId}})" ><img class="scrollLoading" src='<ls:photo item="${pro.img}" />'></a>

 

 

OC接收参数

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
 
    NSString *requestString = [[[request URL]  absoluteString] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding ];
    
    if ([requestString hasPrefix:@"myapp:"]) {
        NSLog(@"requestString:%@",requestString);
        //如果是自己定义的协议, 再截取协议中的方法和参数, 判断无误后在这里手动调用oc方法
        NSMutableDictionary *param = [self queryStringToDictionary:requestString];
        NSLog(@"get param:%@",[param description]);
 
        NSString *func = [param objectForKey:@"func"];
        
        if([func isEqualToString:@"callFunc"])
        {
            [self testFunc:[param objectForKey:@"first"] withParam2:[param objectForKey:@"second"]  andParam3:[param objectForKey:@"third"] ];
            
        }
/*
 * 方法的返回值是BOOL值。
 * 返回YES:表示让浏览器执行默认操作,比如某个a链接跳转
 * 返回NO:表示不执行浏览器的默认操作,这里因为通过url协议来判断js执行native的操作,肯定不是浏览器默认操作,故返回NO
 * 
 */
        return NO;
    }
    return YES;
}



- (NSMutableDictionary*)queryStringToDictionary:(NSString*)string {
    NSMutableArray *elements = (NSMutableArray*)[string componentsSeparatedByString:@"&"];
    NSMutableDictionary *retval = [NSMutableDictionary dictionaryWithCapacity:[elements count]];
    for(NSString *e in elements) {
        NSArray *pair = [e componentsSeparatedByString:@"="];
        [retval setObject:[pair objectAtIndex:1]?:@"" forKey:[pair objectAtIndex:0]?@:"nokey"];
    }
    return retval;
}



具体引自  http://www.skyfox.org/javascript-ios-navive-message.html

 请尊重知识,请尊重原创 更多资料参考请见  http://www.cezuwang.com/listFilm?page=1&areaId=906&filmTypeId=1

分享到:
评论

相关推荐

    js与iOS交互.zip

    js与iOS交互欢迎大家下载学习

    JS与OC互调demo

    该文件李含有三个文件夹,分别是iOS7之前的旧方法实现的JS与OC之间的混合开发、iOS7之后的javascriptCore.framework框架、GitHub上的demo。

    iOS开发教程之WKWebView与JS的交互

    主要给大家介绍了关于iOS开发教程之WKWebView与JS的交互的相关资料,文中通过示例代码介绍的非常详细,对各位iOS开发者们具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

    IOS 20个实用例子.zip

    -- 使用Delegate在两个ViewController间传值 -- 内存泄露Demo leaky app -- iOS上拉加载更多的实现 -- iOS视频通话/直播demo -- 数据库操作(使用FMDB) -- iOS图文混排(模仿新浪微博) -- IOS高仿微信聊天对话界面 -...

    IOS与网页JS交互详解及实例

    IOS与网页JS交互 随着移动APP的快速迭代开发趋势,越来越多的APP中嵌入了html网页,但在一些大中型APP中,尤其是电商类APP,html页面已经不仅仅满足展示功能,这时html要求能与原生语言进行交互、相互传值。比如携程...

    iOS与H5界面JSBridge交互Demo

    iOS的UIWebView和H5的JS的相互调用和相互传值Demo, 一键运行, 简介明了~~ 都是自己躺过又填好的坑啊~~~~~~~

    vue使用微信扫一扫功能的实现代码

    第一步: 安装weixin-js-sdk 和 jquery 包 npm install weixin-js-sdk jquery 第二部: 配置wx.config (配置都是后端返回来的... //(兼容安卓和ios) let url = "传值"; let ua = navigator.userAgent.toLowerCase();

    android js安全的交互

    android 原有的交互模式存在漏洞,会出现被注入的危险。通过这种模式更加安全,方便,封装好,只需关系自个的业务代码。而且兼容ios

    ASP.NET+H5+Zxing+js+sweetalert2 实现手机端和PC端调用摄像头进行二维码扫一扫

    本程序使用VS2019进行制作,利用ASP.NET+H5+Zxing+js+sweetalert2 实现手机端和PC端调用摄像头进行二维码扫一扫,实现前端采集数据,后端进行分析并向前端传值,pc端可运行,手机端鸿蒙系统,安卓,IOS4.X以上均可...

    UIWebView与 javascript的交互三

    这个demo主要实现了OC页面传值到js页面,并修改html 页面的值,同时实现了html 页面的数据传递到 OC页面,很经典的哦

    vue使用微信扫一扫

    vue使用微信扫一扫 第一步: 安装weixin-js-sdk 和 jquery 包 npm install weixin-js-sdk jquery 第二部: 配置wx.config (配置都是后端返回... //(兼容安卓和ios) let url = 传值; let ua = navigator.userAgent.t

    RNLearning:构建一个完整的React Native项目包括React Navigation、Redux 、Fetch、RN通讯、第三方组件等,并集成Android,IOS

    React Native通讯 (初始化原生传值到RN、RN监听、JS通讯等) 其它第三方组件集成 兼容Android 27.0.2 编译版本,AndroidStudio 3.0.1 避免更多人采坑 开始 RN 环境配置 RN 项目运行 RN Vscode配置 Eslint 规则修改 ...

    webview内容与本地交互

    作者CZXBigBrother,源码MCWebBridgeNative,iOS Web Bridge Native,webview内容与本地交互,有非常非常爽的功能。#利用的url拼接地址或者JS方法进行原生交互 (ps:js部分文档稍后补上) ##打开任意controller(不需要...

    微信小程序中实现一对多发消息

    微信小程序中各个界面之间的传值和通知比较蛋疼。所以模仿了iOS中的通知中心,在微信小程序中写了一套类似的通知中心。 通知中心可以做到:1对多发消息,传递object。使用十分简洁。 使用时,在需要接收消息的界面...

    微信小程序中实现一对多发消息详解及实例代码

    微信小程序中各个界面之间的传值和通知比较蛋疼。所以模仿了iOS中的通知中心,在微信小程序中写了一套类似的通知中心。 通知中心可以做到:1对多发消息,传递object。使用十分简洁。 使用时,在需要接收消息的界面...

    详细讲解vue2+vuex+axios

    在vue2项目中,组件间相互传值或者后台获取的数据需要供多个组件使用的情况很多的情况下(后台获取数据存入vuex,组件之间共享数据),那么就需要用vuex来管理这些。 整个的流程是在组件的created中提交dispatch,...

    新版网易新闻客户端应用

    本页面主要的亮点是JS代码与OC代码间的传值。在webview中点击图片后下面弹出可以保存的式样,这是控制一个页面重定向方法拦截发出的请求来实现的。 3.评论页相对较为简单,就是普通的自定义cell。控制好自定义的...

    vue+vuex+axios从后台获取数据存入vuex,组件之间共享数据操作

    在vue项目中组件间相互传值或者后台获取的数据需要供多个组件使用的情况很多的话,有必要考虑引入vuex来管理这些凌乱的状态,今天这边博文用来记录这一整个的过程,后台api接口是使用webpack-server模拟的接口,这...

Global site tag (gtag.js) - Google Analytics