JS与OC交互相关文章

最近公司项目组长添加了一种JS与OC交互的方法,一直想研究,于是乎就各种百度,下面把我觉得让我思路打开的几篇文章分享给大家,后续有时间会补上相关使用Demo。
iOS js oc相互调用(JavaScriptCore)
iOS js oc相互调用(JavaScriptCore)(二)
关于JS和OC交互
iOS与JS交互实战篇(ObjC版)
JS&iOS原生交互
webView与js交互

再给大家看一下项目中实际的代码吧

#import <Foundation/Foundation.h>
#import <JavaScriptCore/JavaScriptCore.h>
#import "ParentWebView.h"

/**  用于传值的Block,具体传值克根据需要自定义 **/
typedef void(^ CLMarketModelBlock)(NSString *type,NSString *mainType,NSString *urlStr);

@protocol JavaScriptObjectiveCDelegate <JSExport>
/**  以下的方法名称是需要跟JS涉及的方法名相对应的一致的命名  **/
- (void) goodsCar;
- (void) reserveFlower;
- (void) huacaoReserve;
- (void)list:(NSString *)categorId Detail:(NSString *)Property ;
- (void) go: (NSString *)url Looper: (NSString *)title;
- (void) reserveListDetail:(NSString *)Date;
@end
@interface CLMarketModel : NSObject<JavaScriptObjectiveCDelegate>
@property (nonatomic, weak) JSContext *jsContext1;
@property (nonatomic, weak) ParentWebView *webView1;
@property (nonatomic ,strong) NSString *type;
@property (nonatomic ,copy)  CLMarketModelBlock CLMarketBlock;
@end
#import "CLMarketModel.h"
#import "MaketViewController.h"
@implementation CLMarketModel


- (void)goodsCar  {
    self.CLMarketBlock(_type,nil,nil);
}

- (void)reserveFlower  {
    NSString *str = [NSString stringWithFormat:@"%@%@",E_InsideUrl,@"/easyflower/h5_3/yh_huacaiyuding.html?app=ios"];
    self.CLMarketBlock(str,EF_YUDING,nil);
}

- (void) huacaoReserve  {
    self.CLMarketBlock(nil,EF_HUACAOYUDING,nil);
}

- (void) list:(NSString *)categorId Detail:(NSString *)Property {
    self.CLMarketBlock (nil,EF_SHANGPIN,nil);
}

- (void) go: (NSString *)url Looper: (NSString *)title {
    self.CLMarketBlock(nil,EF_QITAURL,url);
}

- (void)reserveListDetail:(NSString *)Date {
    self.CLMarketBlock (nil,nil,Date);
}
@end
#import "CLMarketModel.h"
#import <JavaScriptCore/JavaScriptCore.h>
{
 JSContext *_mainJsContxt;
}

/****************************************************************************************************************************************************************************************************************************/

 _mainJsContxt = [webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
    CLMarketModel *model  = [[CLMarketModel alloc] init];
    
    _mainJsContxt[@"JSInterface"] = model;
    model.jsContext1 = _mainJsContxt;
    model.webView1 = _Myweb;
    __weak __typeof(self)weakSelf = self;
    model.CLMarketBlock = ^(NSString *type ,NSString *mainTYpe,NSString *Urlstr)
    {
            /**  根据传值不同做不同的操作即可 **/       
    };
    
    
    _mainJsContxt.exceptionHandler = ^(JSContext *context, JSValue *exceptionValue) {        
        context.exception = exceptionValue;
        /**     程序异常时的相关操作放到这里即可     **/    
};
    
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,254评论 4 61
  • 最近整理了一下原生与H5之间的交互方式,简单的做个总结。OC端与JS的交互,大致有这几种:拦截协议、JavaScr...
    谈Xx阅读 31,189评论 41 75
  • 设置开机启动需要如下几个步骤: 编写配置脚本 [** vim /etc/init.d/mongodb** ] 修改...
    西门吹牛々阅读 3,009评论 2 2
  • (一) 人生的每一个选择都应该是为了自己。 (二) 最近心态不好,有点急,没有拿到offer的人真的很惨,过的不好...
    西柚西柚那个V阅读 134评论 0 1
  • 很久没运动了,前几天在家里练习了一个小时的瑜珈,都是简单的动作,自认为每个动作都完成得轻松到位,筋骨得到了拉伸,心...
    勤学的小实验阅读 505评论 0 5