首先先创建一个HTML文件 拖到项目中
HTML代码:
之后wkwebview的viewdidload中写:
self.webView.navigationDelegate = self;
// 标记本地HTML文件只加载一次
self.isOpen = YES;
NSString * path = [[NSBundle mainBundle] pathForResource:@"wkwebviewPost" ofType:@"html"];
NSString * html = [[NSString alloc] initWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
[self.webView loadHTMLString:html baseURL:[[NSBundle mainBundle] bundleURL]];
之后要在代理方法写:
#pragma mark --加载本地HTML
- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler{
[super webView:webView decidePolicyForNavigationAction:navigationAction decisionHandler:decisionHandler];
// 必须实现decisionHandler的回调,否则就会报错
if (navigationAction.navigationType == WKNavigationTypeLinkActivated) {
decisionHandler(WKNavigationActionPolicyCancel);
NSLog(@"WKNavigationActionPolicyCancel");
} else {
decisionHandler(WKNavigationActionPolicyAllow);
NSLog(@"WKNavigationActionPolicyAllow");
}
}
- (void)webView:(WKWebView *)webView didFinishNavigation:(null_unspecified WKNavigation *)navigation{
if (self.isOpen) {
// 要传递的参数
NSString * dataStr = @"{\"token\":\"cac6af340960485aa334416c8a34ddbf\"}";
// 要访问的地址
NSString * url = @"http://192.173.1.8:8000/";
NSString * js = [NSString stringWithFormat:@"my_post(\"%@\", %@)",url,dataStr];
// 最后执行JS代码
[webView evaluateJavaScript:js completionHandler:nil];
// 设置标记确保只执行一次
self.isOpen = NO;
}
}