iOS 加载HTML的相关问题(与JS的互相调用和WKWebView加载本地网页)

本文主要是介绍iOS 加载HTML的相关问题(与JS的互相调用和WKWebView加载本地网页),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

首先理一下iOS 加载网页的两种方式UIWebView和WKWebView


前一种存在内存泄露,后面一种是苹果推出的替代UIWebView的一种新的加载网页的方式

UIWebView与JS的相互调用,下面的文章已经写的非常好了,大家可以复制 跳转

http://www.jianshu.com/p/d19689e0ed83

这里需要注意的是,如果是自己加载JS代码,如果涉及创建类,一定需要提醒JS的代码书写的逻辑先后问题,不能直接调用我们写的类方法,应该放在一个Ready方法里面,我们在执行完上面的JS代码后,再执行一次Ready这个JS方法。


WKWebView的加载JS代码的方法有变,但是交互的形式不变,大家可以去WKWebView的两个代理方法研究下。

这里特别需要注意一个事情,WKWebView不支持用loadRequest的方法加载本地的静态HTML,我们可以用

[self.webViewloadFileURL:[NSURLfileURLWithPath:url]allowingReadAccessToURL:[NSURLfileURLWithPath:accessPath]];

这个方法进行替换,其中的前面一个参数url是指想要加载的具体哪个文件,比如我这里url就是指向一个index.html文件,后面一个参数特别注意一下,它是指系统能够访问的文件路径,简单来说就是HTML所需的相关JS、CSS 等文件所在的目录,这样就能够保证能够正常的加载。


但是 iOS9.0以下的版本不支持上面这个方法,这也是一个坑,解决的方式见下面这个链接,http://www.jianshu.com/p/ccb421c85b2e


当然,WKWebView有一个优势在于性能更好,并且可以通过代理方法拦截JS中的alert、confirm等提示框,因为UIWebView无法拦截,标题只能是网页的标题,展示起来特别的丑,如果想要拦截alert方法,需要执行下面的代理方法,其他两种形式的提示框都有对应的代理方法。

- (void)webView:(WKWebView *)webView runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(WKFrameInfo *)frame completionHandler:(

这篇关于iOS 加载HTML的相关问题(与JS的互相调用和WKWebView加载本地网页)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/917084

相关文章

Pyserial设置缓冲区大小失败的问题解决

《Pyserial设置缓冲区大小失败的问题解决》本文主要介绍了Pyserial设置缓冲区大小失败的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录问题描述原因分析解决方案问题描述使用set_buffer_size()设置缓冲区大小后,buf

resultMap如何处理复杂映射问题

《resultMap如何处理复杂映射问题》:本文主要介绍resultMap如何处理复杂映射问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录resultMap复杂映射问题Ⅰ 多对一查询:学生——老师Ⅱ 一对多查询:老师——学生总结resultMap复杂映射问题

java实现延迟/超时/定时问题

《java实现延迟/超时/定时问题》:本文主要介绍java实现延迟/超时/定时问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java实现延迟/超时/定时java 每间隔5秒执行一次,一共执行5次然后结束scheduleAtFixedRate 和 schedu

python连接本地SQL server详细图文教程

《python连接本地SQLserver详细图文教程》在数据分析领域,经常需要从数据库中获取数据进行分析和处理,下面:本文主要介绍python连接本地SQLserver的相关资料,文中通过代码... 目录一.设置本地账号1.新建用户2.开启双重验证3,开启TCP/IP本地服务二js.python连接实例1.

如何解决mmcv无法安装或安装之后报错问题

《如何解决mmcv无法安装或安装之后报错问题》:本文主要介绍如何解决mmcv无法安装或安装之后报错问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mmcv无法安装或安装之后报错问题1.当我们运行YOwww.chinasem.cnLO时遇到2.找到下图所示这里3.

浅谈配置MMCV环境,解决报错,版本不匹配问题

《浅谈配置MMCV环境,解决报错,版本不匹配问题》:本文主要介绍浅谈配置MMCV环境,解决报错,版本不匹配问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录配置MMCV环境,解决报错,版本不匹配错误示例正确示例总结配置MMCV环境,解决报错,版本不匹配在col

Vue3使用router,params传参为空问题

《Vue3使用router,params传参为空问题》:本文主要介绍Vue3使用router,params传参为空问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录vue3使用China编程router,params传参为空1.使用query方式传参2.使用 Histo

Java调用C++动态库超详细步骤讲解(附源码)

《Java调用C++动态库超详细步骤讲解(附源码)》C语言因其高效和接近硬件的特性,时常会被用在性能要求较高或者需要直接操作硬件的场合,:本文主要介绍Java调用C++动态库的相关资料,文中通过代... 目录一、直接调用C++库第一步:动态库生成(vs2017+qt5.12.10)第二步:Java调用C++

使用Python开发一个简单的本地图片服务器

《使用Python开发一个简单的本地图片服务器》本文介绍了如何结合wxPython构建的图形用户界面GUI和Python内建的Web服务器功能,在本地网络中搭建一个私人的,即开即用的网页相册,文中的示... 目录项目目标核心技术栈代码深度解析完整代码工作流程主要功能与优势潜在改进与思考运行结果总结你是否曾经

SpringBoot首笔交易慢问题排查与优化方案

《SpringBoot首笔交易慢问题排查与优化方案》在我们的微服务项目中,遇到这样的问题:应用启动后,第一笔交易响应耗时高达4、5秒,而后续请求均能在毫秒级完成,这不仅触发监控告警,也极大影响了用户体... 目录问题背景排查步骤1. 日志分析2. 性能工具定位优化方案:提前预热各种资源1. Flowable