关于用wkwebview加载沙盒documents下html文件 模拟器可以,真机不行的解决方案
最近也遇到这个问题,把我解决的思路记录一下
1、问题:
用wkwebview加载(loadRequest)沙盒documents下html文件 模拟器可以,真机不行
(前提是html内部含引用外联样式js等)
2、解决及分析:
对于uiwebview,在模拟器和真机下,我们用loadrequest都是可以请求html的,没有问题。
不过对于wk来说,在安全性上,苹果做了限制,模拟器可以,device真机上有所区别
原因是WKWebView是不允许通过loadRequest的方法来加载本地根目录的HTML文件,也就是说,我们用loadrequest方式加载的路径,由于内部引用了其他路径的内容,苹果觉得这样做不安全,就给你限制了,所以这些样式、js等就都失效了。
1、不过对于ios9及以后,我们可以使用loadFileURL来实现,这个也是苹果在ios9之后提供的api。
wkwebview.loadFileURL(url, allowingReadAccessTo: accessUrl)
参数解释:
url:html所在的path路径
allowingReadAccessTo :表示授权路径,html里使用的css、js等文件(如果有外联引用)都要包含在内。
关于loadFileURL方法的讲解,可以参考这篇 ,写得很棒:https://www.cnblogs.com/breezemist/p/4595906.html
2、对于ios9之前系统,我们就要通过其他捷径来实现了,根据其他资料查询,找到一种如下:
将document下的html等资源文件,拷贝到tmp下,然后在请求时,将路径转为tmp下即可。
不过tmp文件有个不定时会被清理的隐患,所以最好在每次启动时检测一遍。
如何实现可参考:https://www.jianshu.com/p/ccb421c85b2e
3、此外,我发现除了loadrequest方法,loadHTMLString也会存在以上问题
我实验了很多次,loadHTMLString请求数据时,模拟器可以正常显示有外联样式的html,不过在真机下就不行了,如果用这种方法,可能只能用其他方式处理了
比如:
1、改用uiwebview
2、转换思路,如果之前用html拼接好内容,我们可以提取出内容,然后create到本地,再用 loadFileURL 方式加载即可。
4、参考文档:
WKWebView使用遇到的坑
iOS 8 WKWebView 知识点
关于用wkwebview加载沙盒documents下html文件 模拟器可以,真机不行的解决方案的更多相关文章
- 加载所有jar包下指定文件
加载所有jar包下指定文件: 如spring中加载 META-INF/spring.handlers 加载 org.springframework.core.io.support.Properties ...
- IOS学习之IOS沙盒(sandbox)机制和文件操作
IOS学习之IOS沙盒(sandbox)机制和文件操作(一) 1.IOS沙盒机制 IOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒,所以所有的非代码文件都 ...
- IOS沙盒(sandbox)机制和文件操作
IOS学习之IOS沙盒(sandbox)机制和文件操作 作者:totogo2010 ,发布于2012-9-21,来源:CSDN 目录: IOS学习之IOS沙盒(sandbox)机制和文件操作( ...
- iOS学习之iOS沙盒(sandbox)机制和文件操作(二)
1.获取程序的Home目录 NSString *homeDirectory = NSHomeDirectory(); NSLog(@"path:%@", homeDirectory ...
- iOS学习之iOS沙盒(sandbox)机制和文件操作复习
1.iOS沙盒机制 iOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒,所以所有的非代码文件都要保存在此,例如图像,图标,声音,映像,属性列表,文本文件等. ...
- iOS学习之iOS沙盒(sandbox)机制和文件操作1
iOS学习之iOS沙盒(sandbox)机制和文件操作 接上篇 iOS学习之iOS沙盒(sandbox)机制和文件操作(一) 我们看看如何获取应用程序沙盒目录.包括真机的沙盒的目录. 1.获取程序的H ...
- wkwebview加载本地html的要点
项目中有些页面,我采用了html页面开发,然后用wkwebview加载的设计.在加载过程中遇见了一些问题,在这里进行一些记载和讨论.如有不同意见欢迎进行评论沟通. 问题时候这样的: 在webview的 ...
- WKWebView 加载本地HTML显示不出网页问题,这点你注意了吗?-------完美显示
1.首先,WKWebView的引入和创建,我这里就不做阐述,我要说的,就是解决别人不能给您解决的问题 2.WKWebView 加载本地HTML,也就是两三句代码 是吧?作为读者的您肯定也知道,也实现 ...
- iOS之WKWebView加载的网页自适应大小
一,前言 有时候在WKWebView加载页面后会发现页面的字会很小, 这是因为原网页没有做手机屏幕尺寸的适配, 那么在后台不做调整的情况下我们移动端怎样来适配页面呢? 以下代码可以适配大小(原本不可以 ...
随机推荐
- 离线下载安装 NLTK 的 nltk_data 模块
离线下载安装 NLTK 的 nltk_data 模块 转 https://blog.csdn.net/u010167269/article/details/63684137 在 Linux 上使用 N ...
- 超越halcon速度的二值图像的腐蚀和膨胀,实现目前最快的半径相关类算法(附核心源码)。
我在两年前的博客里曾经写过 SSE图像算法优化系列七:基于SSE实现的极速的矩形核腐蚀和膨胀(最大值和最小值)算法 一文,通过SSE的优化把矩形核心的腐蚀和膨胀做到了不仅和半径无关,而且速度也相当的 ...
- JDK 1.6 HashMap 源码分析
前言 前段时间研究了一下JDK 1.6 的 HashMap 源码,把部份重要的方法分析一下,当然HashMap中还有一些值得研究得就交给读者了,如有不正确之处还望留言指正. 准备 需要熟悉数组 ...
- pwntools简介
安装binutils: git clone https://github.com/Gallopsled/pwntools-binutils sudo apt-get install software- ...
- type__列表
- Alpha(8/10)
鐵鍋燉腯鱻 项目:小鱼记账 团队成员 项目燃尽图 冲刺情况描述 站立式会议照片 各成员情况 团队成员 学号 姓名 git地址 博客地址 031602240 许郁杨 (组长) https://githu ...
- Android图片缓存框架Glide
Android图片缓存框架Glide Glide是Google提供的一个组件.它具有获取.解码和展示视频剧照.图片.动画等功能.它提供了灵活的API,帮助开发者将Glide应用在几乎任何网络协议栈中. ...
- vs2010黑色主题Dark完美设置
版权声明:本文为博主原创文章,未经博主允许不得转载. ----------------------------------------------------------------------- ...
- 分布式存储MooseFS
MooseFS 简介 http://moosefs.org/ MFS特性 安装和配置简单方便 可靠性高(数据的多个拷贝被存储在多个不同的服务器上) 通过添加新的服务器或硬盘就可以实现容量的动态 ...
- docker自动重启容器
docker run --restart=always -d --name myunbuntu ubuntu /bin/bash -c "l am a docker" //无 ...