最近做的功能,有部分逻辑是h5实现的,我们采用了本地+网络的机制来提高h5的显示速度,首先说一下机制,

1.本地存在一份html文件+校验码

2.程序启动获取远程校验码

3.远程校验码与本地校验码,比对,不同则下载最新html文件到沙盒

4.加载html首先看沙盒路径是否有html文件,优先加载沙盒,再次加载工程内部文件

ps:这里有个下载的问题,若是沙盒相同路径存在同一文件,从网络下载的话,不会覆盖原文件,导致不能覆盖老的文件,校验出问题,

解决方法:

1.下载之前先删除相应文件(有风险)

2.设置缓冲区,下载到缓冲区完成后再删除工作区文件,拷贝缓冲区文件到工作区(推荐)

以下说一下WKWebview加载本地html文件和html字符串出现的两个问题

html加载本地html文件:

1.通常的加载方式加载工程内部或是网络数据 个别机型和系统也可以加载沙盒的html,亲测在iphone6中这种方式加载不出沙盒的数据

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"lineSte"]];// 服务器

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL fileURLWithPath:@"locationPath"]];// 本地url地址

[self.webView loadRequest:self.model.URLRequest];

2.加载沙盒html文件,iphone若是需要加载沙盒html文件需要用这个方法,iOS9有效

// 这里需要两个参数,本地html文件的url地址,这里说的是文件的url而非路径

// 还有一个是html文件存放的路径一般是上级的任意一个路径都可以

[self.webView loadFileURL:self.model.URL allowingReadAccessToURL:[NSURL fileURLWithPath:self.model.allowingReadAccessPath]];

3.直接加载html字符串

[self.myWebView loadHTMLString:[self setHtmlStringWithContent:threadModel.body cssStyle:nil jsUrl:nil] baseURL:nil];

// 配置blog h5数据

- (NSString *)setHtmlStringWithContent:(NSString *)content cssStyle:(NSString *)cssStyle jsUrl:(NSString *)jsUrl{

#pragma mark = 此处添加标注 若是html文件和css,js都是本地,可以使用本地的css、js文件,若是像这种直接拼接的html 字符串,html会找不到本地的路径,只能使用网络地址

NSString *cssStyle = @"http://1.css";

NSString *jsUrl = @"http://1.js";

// 获取字体颜色r,g,b

UIColor *color = [UIColor blackColor];

const CGFloat *components = CGColorGetComponents(color.CGColor);

int r = components[0] * 255;

int g = components[1] * 255;

int b = components[2] * 255;

// 组建成#rgb的文本形式

NSString *colorStr = [NSString stringWithFormat:@"%0x%0x%0x", r, g, b];

colorStr = @"515151";

const NSString *htmlHead = @"

";

//css

NSString *css = nil;

css = [NSString stringWithFormat:@"",cssStyle];

//js

NSString *js = [NSString stringWithFormat:@"",jsUrl];

const NSString *htmlBlogContentStart = [NSString stringWithFormat:@"

"];

const NSString *htmlBlogContentEnd = @"

";

NSString *html = [NSString stringWithFormat:@"%@%@%@%@%@%@",htmlHead,css,js,htmlBlogContentStart,content,htmlBlogContentEnd];

return html;

}

// 这种方式本身没有问题,但是像我们的需求,css和js文件放在本地,此时若是在htmlStr添加css和js的本地读取路径(路径写绝对路径),看不到任何效果,猜测自己拼接的html字符串加载本地css和js文件,会获取不到文件,没看出什么原因(知道原因的小伙伴欢迎留言)

根据上述3的情况果断联系后端,搞了css和js文件的服务器连接,解决问题

为验证本地html可加载本地css文件,创建本地html文件(文件内饮用相对路径的css和js)和css和js在同一路径下,上述1或2的方法加载html文件,样式没有问题,由此确定是自己创建html字符串没有路径,识别本地文件有问题,在此记录一下,希望能对遇到相同问题的小伙伴有点帮助

web加载本地html,WKWebview加载本地html问题汇总相关推荐

  1. iOS WKWebView加载本地文件之权威解说

      在实际的iOS开发中,我们有很多的地方需要通过WKWebView加载本地的文件.但是由于WKWebview存在着一些跨域的问题.UIWebView直接加载的方法不能正常使用了.这里就和大家分享一下 ...

  2. IOS 解决WKWebView加载本地html资源文件异常处理

    wkwebView加载本地资源时,有时候无法加载全css等资源文件.导致无线显示.需要做一下特殊处理: WKWebViewConfiguration *config = [[WKWebViewConf ...

  3. wkwebview 文件服务器,wkwebview开发常见问题(wkwebview加载本地沙盒文件)

    wkwebview加载本地沙盒文件是wkwebview开发中一个很常见的问题,今天对该问题进行一个较为详细的记录 1.#pragma mark -https认证 //web项目里面,使用了https认 ...

  4. wkwebview 文件服务器,WKWebView 加载沙盒图片和音视频文件失败

    先来段html文件(此html直接加载的真机沙盒目录下的一张图,用WKWebView 加载无法显示) 原因:貌似是WebKit现在的bug 解决办法:本地开了一个类似Apache服务器(亲测有效) 步 ...

  5. iOS之深入解析WKWebView加载的生命周期与代理方法

    一.前言 从 WebView 开始加载一条请求,到页面完整呈现这一过程发生了什么?无论是做 WebView 性能优化还是异常问题监控与排查,都离不开对WKWebView加载的生命周期与代理方法的剖析. ...

  6. cesium 3dtiles 加载本地数据_深入echarts学习:加载跨域、异步、本地json数据的防坑录

    1 说明: ===== 1.1 推荐指数:★★★★ 1.2 网上这方面说明,大多模棱两可,坑很多,讲透彻的不多,故本人做一个小结. 1.3 我曾介绍echarts的简单基本用法: <Echart ...

  7. web项目的启动时文件加载顺序

    web项目的启动时文件加载顺序 转自:http://www.cnblogs.com/yw-ah/p/5751509.html 一. 1.启动一个WEB项目,WEB容器会先去读取它的配置文件web.xm ...

  8. 小程序一次性上传多个本地图片,上拉加载照片以及图片加载延迟解决之道

    一:小程序之一次性上传多个本地相片 最近由于项目需要所以学了下小程序,也做了一些东西,随后便有了以下的一些总结了,现在说说如何使用小程序一次性上传多个本地相片. 问题描述 最近做项目的时候要实现一个上 ...

  9. uiwebview 读取本地html,UIWebView加载本地HTML文件

    一.准备HTML文件及其资源文件 使用UIWebView加载本地的HTML文件 index.html,在index.html中引用了本地的图片.CSS文件.JS文件以及外部的图片. index.htm ...

最新文章

  1. CentOS6.5上源码安装MongoDB3.2.1
  2. HTML基础:文本列表实例2(9)
  3. 设计模式学习 - 工厂模式
  4. wxWidgets:wxPen类用法
  5. boost::lexicographical_compare相关的测试程序
  6. Matlab中 pdist 函数详解
  7. iOS开发之模拟器(simulator)的复制粘贴
  8. MySql统计函数COUNT详解
  9. 大规模WebGL应用引发浏览器崩溃的几种情况及解决办法
  10. LoRa技术-什么是LoRa
  11. 【Memcached】分布式内存对象缓存系统
  12. 如何用java POI在excel中画线_Java中使用POI在Excel单元格中画斜线—XLS格式
  13. Python3:批量读取excel百度分享链接保存到百度网盘
  14. 这家机场扶梯安装“智能管家”,扶梯消毒仪现高招,绝了!
  15. Jmeter系列(32)- 详解 CSV 数据文件设置
  16. 俞敏洪:100个句子记完的7000单词(1)
  17. elasticsearch search timeout机制
  18. adb 操作 快速点击屏幕
  19. 计算机电脑桌面文字虚,字体模糊怎么调节 解决电脑字体模糊的方法大全详细图解...
  20. 黑盒(功能)测试以及测试用例设计

热门文章

  1. 严格匹配_2020湖北省考招录“刚柔并济”强调“人岗匹配”
  2. C语言——找出矩阵最大值
  3. 钥匙计数之一(HDU-1483)
  4. 暑期训练日志----2018.8.25
  5. 计算分数加减表达式的值(信息学奥赛一本通-T1079)
  6. NOIP2016普及组第一题:买铅笔
  7. 46 MM配置-采购-条件-定价过程-定义方案组
  8. python多目标优化_多目标优化算法(四)NSGA3(NSGAIII)论文复现以及matlab和python的代码...
  9. MFC对话框动态刷新图片(仿照全屏屏保)
  10. python 数据结构包_python 中numpy科学计算工具包——基础数据结构