iOS 调用本地.js文件的方法

2018-10-18  本文已影响0人  总有骄阳lcy

接到一个需求,需要我调用本地.js文件里的方法,我一开始就想当然的直接用webView去调用:

//需要调用的文件为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()为需要调用的js方法
- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation {
    [webView evaluateJavaScript:@"generatorBrainKey()" completionHandler:^(id _Nullable result, NSError * _Nullable error) {
        NSLog(@"%@",result);
        NSLog(@"%@",error);
    }];
}

结果是一直在打印error,后来发现并不能去调.js文件里的东西,但是可以用html文件包装一下.js文件


屏幕快照 2018-10-18 下午3.24.28.png
//text.html里的内容
<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()方法了,但是在真机测试的时候又出现问题了,因为我们写的地址是固定的,无法找到指定的.js文件,这个问题的当时纠结了半天,结果发现解决办法就是把前面的地址去掉只保留文件名就行.

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    <script type="text/javascript" src="bundle.js"></script>
</head>
</html>

这样就没问题了.

上一篇 下一篇

猜你喜欢

热点阅读