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

接到一个需求,需要我调用本地.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>

这样就没问题了.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容