1, <!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<script>
var test2 =function(){
alert(2);
onTest2("aaaa");
}
var test3 =function(){
alert(3);
window.external.onTest3("bbbb","cccc");
}
</script>
<title>
</title>
</head>
<body>
<button onclick="test1()">字典参数</button>
<button onclick="test2()">字符串参数</button>
<button onclick="test3()">两个字符串参数</button>
</body>
</html>
2.
#import <Foundation/Foundation.h>
#import <JavaScriptCore/JavaScriptCore.h>
@protocol external <JSExport>
-(void) onTest3: (NSString *) message :(NSString*)bbbb;
-(void) test1;
@end
@interface WBExternal : NSObject<external>
@end
3.
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
if (_jsContext ==nil) {
// 1.
_jsContext = [webViewvalueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
// 2. 关联打印异常
_jsContext.exceptionHandler = ^(JSContext *context,JSValue *exceptionValue) {
context.exception = exceptionValue;
NSLog(@"异常信息:%@", exceptionValue);
};
WBExternal *nativeApis = [[WBExternalalloc] init];
_jsContext[@"external"] = nativeApis;
_jsContext[@"onTest2"] = ^(NSString *param) {
NSLog(@"%@", param);
};
_jsContext[@"test1"] = ^() {
NSLog(@"%@",@"test1");
};
// Mozilla/5.0 (iPhone; CPU iPhone OS 10_10 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Mobile/12B411
id userAgent = [webViewstringByEvaluatingJavaScriptFromString:@"navigator.userAgent"];
NSLog(@"%@", userAgent);
}
}