接到一個需求,需要我調(diào)用本地.js文件里的方法,我一開始就想當(dāng)然的直接用webView去調(diào)用:
//需要調(diào)用的文件為bundle.js
self.webView = [[WKWebView alloc] initWithFrame:self.view.frame];
_webView.navigationDelegate = self;
[_webView loadRequest:[[NSURLRequest alloc] initWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"bundle" ofType:@"js"]]]];
//WKWebView代理方法 generatorBrainKey()為需要調(diào)用的js方法
- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation {
[webView evaluateJavaScript:@"generatorBrainKey()" completionHandler:^(id _Nullable result, NSError * _Nullable error) {
NSLog(@"%@",result);
NSLog(@"%@",error);
}];
}
結(jié)果是一直在打印error,后來發(fā)現(xiàn)并不能去調(diào).js文件里的東西,但是可以用html文件包裝一下.js文件

屏幕快照 2018-10-18 下午3.24.28.png
//text.html里的內(nèi)容
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<script type="text/javascript" src="/Users/lijing/Desktop/test/test/bundle.js"></script>
</head>
</html>
這樣就能訪問到generatorBrainKey()方法了,但是在真機(jī)測試的時候又出現(xiàn)問題了,因為我們寫的地址是固定的,無法找到指定的.js文件,這個問題的當(dāng)時糾結(jié)了半天,結(jié)果發(fā)現(xiàn)解決辦法就是把前面的地址去掉只保留文件名就行.
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<script type="text/javascript" src="bundle.js"></script>
</head>
</html>
這樣就沒問題了.