美文网首页
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