美文网首页
swift WKWebView 加载本地H5以及css/js/i

swift WKWebView 加载本地H5以及css/js/i

作者: 奶牛的奶糖 | 来源:发表于2023-01-28 11:30 被阅读0次

Create folder references & create group 区别

在本地加载html带css,js文件需要加载时

1.使用create group 方式引入文件,文件夹为黄色, 加载html代码如下:

html文件里面使用js,css文件,相对路劲,需要修改去掉引用./, ../../ 之类的,否则css文件无法生效, 如果多处使用了js,css,img等就需要多次修改容易出错

let filepath = Bundle.main.path(forResource: "WhiteBoardHT", ofType: "html")
self.webView?.load(URLRequest(url: URL.init(fileURLWithPath: filepath!)))

html文件
<script defer="defer" src="chunk-vendors.672038ac.js"></script>
<script defer="defer" src="app.60451670.js"></script>
<link href="chunk-vendors.ea9a733d.css" rel="stylesheet">
<link href="app.d2b833f3.css" rel="stylesheet">

2.Create folder references 方式引入文件, 文件夹为蓝色, 这种方式加载的文件不会去修改html,css,js, img路劲

image.png

看看 copy bundle resource 里面是否添加了蓝色


image.png

这种方式不需要修改html,js,css文件里面的路径

如果直接使用let filepath = Bundle.main.path(forResource: "WhiteBoardHT", ofType: "html"),filepath始终为nil, 需要添加inDirectory: "assets"
正确使用代码如下
let filepath = Bundle.main.path(forResource: "WhiteBoardHT", ofType: "html", inDirectory: "assets")
let pathurl = URL.init(fileURLWithPath: filepath!)
webView?.loadFileURL(pathurl, allowingReadAccessTo: pathurl)

<script defer="defer" src="./static/js/chunk-vendors.672038ac.js"></script>
<script defer="defer" src="./static/js/app.60451670.js"></script>
<link href="./static/css/chunk-vendors.ea9a733d.css" rel="stylesheet">
<link href="./static/css/app.d2b833f3.css" rel="stylesheet">

问题1.如果直接使用[NSBundle mainBundle]查找路径,会发现路劲查找不到为空,
问题2.[_wkWebView loadRequest:request] ,这种方式加载不出来,并且这个方法不允许加载本地的html。正确的方式是用这个loadFileURL:allowingReadAccessToURL:的方法,就可以加载出html了,而且有css和js以及img的。

参考: https://blog.51cto.com/u_4955660/2842848

相关文章

网友评论

      本文标题:swift WKWebView 加载本地H5以及css/js/i

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