美文网首页
iOS 调用本地.js文件的方法

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

作者: 总有骄阳lcy | 来源:发表于2018-10-18 15:31 被阅读0次

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

    这样就没问题了.

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/hyfszftx.html