Skip to content

carlSQ/FMWebViewJavascriptBridge

Repository files navigation

#FMWebViewJavascriptBridge

CI Status Version License Platform

简介

FMWebViewJavascriptBridge inspired by react native 是一个轻量级的JavascriptBridge,只支持WKWebView iOS 8.0之后,与android原生调用保持一致。 image

how to Use

自定义 JavascriptInterface

  • 自定义 JavascriptInterface 类
  • 在暴露的接口前添加FM_EXPORT_METHOD宏
  • 支持的参数可以是 nil NSNull NSString NSNumber NSDictionary NSArray NSDate char int double BOOL
  • 同时支持返回值给Javascrip的回调, 回调的类型FMCallBack,支持参数同上
@implementation JavascriptInterface

FM_EXPORT_METHOD(@selector(push:))
- (void)push:(NSUInteger)one {
  [self.viewController.navigationController
      pushViewController:[WKViewController new]
                animated:YES];
  NSLog(@"test push%ld", (unsigned long)one);
}

FM_EXPORT_METHOD(@selector(pop:))
- (void)pop:(NSString *)testArray {
  [self.viewController.navigationController popViewControllerAnimated:YES];
  NSLog(@"pop array %@", testArray);
}

FM_EXPORT_METHOD(@selector(setNavTitle:response:))
- (void)setNavTitle:(NSDictionary *)userInfo response:(FMCallBack)callBack {
  self.viewController.title = userInfo[@"name"];
  callBack(@{@"name":@"carlSQ",@"age":@"26"});
}

添加接口给javascript调用

用 FMWKWebViewBridge 类中的接口addJavascriptInterface 添加接口道javascrip层

_webViewBridge = [FMWKWebViewBridge wkwebViewBridge:self.webView];
[_webViewBridge addJavascriptInterface:[JavascriptInterface new] withName:@"JavascripInterface"];

js层调用

与android原生调用保持一致,addJavascriptInterface 会在js层注入一个对象,名字是addJavascriptInterface 中设置的名字


<script>

JavascriptInterface.setNavTitle({"name" : "carl", age:"18"},function(responseData) {
                                     setNavTitle.innerHTML = "name:"+responseData.name +"  age:" + responseData.age;
                                     })

</script>

#Usage

pod 'FMWebViewJavascriptBridge', '~> 3.0.0'

Author

carl Shen

License

FMWebViewJavascriptBridge is available under the MIT license. See the LICENSE file for more info.

About

FMWebViewJavascriptBridge inspired by WebViewJavascripBridge and react native

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published