oc嵌套JS+HTML 踩的坑~ iOS篇

我怎么会打死他,当然是选择原谅

前言:
最近在研究整个界面用oc嵌套html+js做这么个东西,需求大概就是用webView(wkwebview)加载本地html,然后oc和js互相引用(iOS用JSC引擎做交互吧不会卡线程之类的很好用),然后我就遇到了一个坑,泪奔啊,找啊找查啊查(在这还要感谢我给力的同事们),可算是破解了,今天我要分享给大家~~~

究竟是什么坑?
在本人拖入html之后界面试了好几次本地webview加载,却总也加载不出来,这个我也是问了几个人,加载本地,大家给的都是一下答案
NSString *path = [[NSBundle mainBundle] bundlePath];
NSString *htmlPath = [path stringByAppendingString:@”ui.html”];
[_webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:htmlPath]]];
这个加载本地webview想必大家非常熟练,方法上出错也是不可能的,但是很少有人会注意到这么获取本地资源会出现路径的问题!路径路径路径 !

解决办法和注意点
在ios项目下添加本地HTML+JS/css/image 当拖入项目时有两种选择:
 一个是 Create groups for any added folders (创建虚拟结构-包结构)
 一个是 Create folder references for any added folders (创建实体结构)

注意:

  • 选第一个Create group:

当文件夹被引入后,引入的文件会被加到同一个文件夹下而忽略了原本的文件路径,而html他们给的文件夹路径必然是原来他们设定好的,如果选这个引入后人家原来关联的css啊还是img的路径就乱了,因此在HTML文件中的路径就会出现问题,图片什么的肯定show不出来了,但不会报错。

选择使用这个,代码就如下,但是搞不好人家路径识别不了。
NSString *path = [[NSBundle mainBundle] bundlePath];
NSString *htmlPath = [path stringByAppendingString:@”ui.html”];
[_webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:htmlPath]]];

  • 选第二个Create folder references:

    选择这个添加完成后,编译过后引入的文件会按照原本的目录结构存放,然后添加相对路径,就完美的解决了路径问题,。

[_webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"js_html/ui.html" relativeToURL:[[NSBundle mainBundle] bundleURL]]]];

这里写图片描述
css、img在html里写的时候应该是原路径相互关联设定好的。我当然是选择~~不是原谅他啊(偷笑.png),是第二个Create folder references。

其他解决方法,我们可以加到沙盒中从沙盒读取,还要什么解决办法大家可以自己想下。

最后,希望大家细心点完美的跳过此坑~~~

怎么使用oc与js交互也非常简单,之后持续更新~~

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值