apicloud apicloud

注册
查看: 12645|回复: 57
打印 上一主题 下一主题

[ 其他 ] WKWebView的使用介绍

主题:
25
帖子:
7174
云币:
6701

[ 其他 ] WKWebView的使用介绍

楼主
12645 57 | 发表于 2020-1-11 17:15:07 |倒序浏览 |阅读模式 | |
本帖最后由 技术咨询-Kenny 于 2020-4-29 11:05 编辑

在iOS系统中,webView分为UIWebView和WKWebView,相比于UIWebView,WKWebView在性能和功能等方面有很大提升,具有Safari相同的JavaScript引擎,支持更多的HTML5特性,并且没有点击事件延迟,滚动时也不会影响页面渲染。

使用方式:

可以在config.xml全局配置useWKWebView字段来使用:
  1. <preference name="useWKWebView" value="true" />
复制代码

或者在打开页面时通过useWKWebView参数来使用:
  1. api.openTabLayout({
  2.     name: 'detail',
  3.     url: './detail.html',
  4.     useWKWebView: true,
  5.     bgColor: '#fff',
  6.     title: '详情',
  7.     navigationBar: {
  8.         background: '#fff'
  9.     }
  10.     });
复制代码

注意事项和建议:

  • 在打开新页面时应尽量使用openTabLayout来代替openWin,使用tabLayout的原生导航栏,加快打开速度。
  • 为页面设置合适的背景颜色,以避免在窗口切换过程中闪现黑色背景。
  • 使用UIWebView时,若系统内存不足时会直接结束掉应用,而使用WKWebView时则只是结束掉页面的渲染进程,因此会表现为页面白屏。可以在config.xml中配置WKWebViewRecoveryMode来刷新页面或者热重启应用。
  • localStorage和UIWebView页面不通用。为避免出现兼容性问题,简单的本地数据存取可以用api对象下的prefs相关接口,而大量的缓存数据则可以使用fs、db来存储。
  • 跨域问题。WKWebView中限制了跨域访问,若服务器未设置允许跨域,则无法使用XMLHttpRequest和jQuery的ajax访问,只能使用api.ajax。在canvas中画图片时,除了图片服务器需设置允许跨域外,还需要使用blob的方式来加载图片,可参考附件示例。本地图片则可以转换成base64使用。注:为方便查看js报错信息,在loader和测试版(debug打开)中默认允许跨域,而正式版禁止跨域。
  • 输入框自动获取焦点问题。为达到更好的体验,如果输入框要在打开页面时自动获取焦点弹出键盘,需使用api.setFocus方法。




本帖子中包含更多资源    您需要 登录 才可以下载或查看,没有帐号?立即注册

转正司机

UID:21994

主题:
187
帖子:
490
云币:
673
推荐
发表于 2020-3-2 23:12:18 |
闪现黑色背景这块有啥更好的解决方案么?我设置合适的背景也没用……都是会闪

主题:
19
帖子:
99
云币:
205
沙发
发表于 2020-2-12 13:32:14 |
localStorage和WKWebView页面不通用吧?

新手上路

UID:521754

主题:
21
帖子:
61
云币:
69
板凳
发表于 2020-3-2 15:46:17 |
如果配置了<preference name="useWKWebView" value="true" /> 就不需要修改现在的openWin了是不,localstorage也没影响,对吧,主要是现有程序使用了太多localStorage

驾校小白

UID:124900

主题:
2
帖子:
14
云币:
27
地板
发表于 2020-3-2 16:44:22 |
宁2017 发表于 2020-3-2 15:46
如果配置了 就不需要修改现在的openWin了是不,localstorage也没影响,对吧,主要是现有程序使用了太多local ...

同问!~

主题:
25
帖子:
7174
云币:
6701
6#
 楼主| 发表于 2020-3-3 10:38:01 |
本帖最后由 技术咨询-Kenny 于 2020-3-3 11:18 编辑
sipo 发表于 2020-3-2 23:12
闪现黑色背景这块有啥更好的解决方案么?我设置合适的背景也没用……都是会闪 ...

一般的页面用openTabLayout打开的话,通过bgColor参数设置背景色基本不会闪。

主题:
25
帖子:
7174
云币:
6701
7#
 楼主| 发表于 2020-3-3 10:41:04 |
宁2017 发表于 2020-3-2 15:46
如果配置了 就不需要修改现在的openWin了是不,localstorage也没影响,对吧,主要是现有程序使用了太多local ...

只WKWebView页面中相互使用基本没影响,不过最好换成平台的Prefs和fs等,同时,不需要存到本地只在内存中访问的数据更应该用setGlobalData等方法。

业余车手

UID:16847

主题:
119
帖子:
739
云币:
1171
8#
发表于 2020-3-4 17:02:33 |
WKWebView页面中之前还是无法读取localstorage, 配置了config.xml 我在试试

主题:
1
帖子:
3
云币:
5
9#
发表于 2020-3-4 20:07:08 |
最近我在App Store上提交更新时反馈我Info.plist中的UIRequiredDeviceCapabilities key设置不正确致使引用无法安装,而平台编程出来的包里没有UIRequiredDeviceCapabilities,这个问题和这次苹果更新有关系吗,以前审核都没问题,前两天提交就不行了

主题:
25
帖子:
7174
云币:
6701
10#
 楼主| 发表于 2020-3-5 10:12:42 |
脸滚键盘写代码 发表于 2020-3-4 20:07
最近我在App Store上提交更新时反馈我Info.plist中的UIRequiredDeviceCapabilities key设置不正确致使引用 ...

和这个没关系,单独发帖,把苹果的反馈内容发出来。
123456下一页
您需要登录后才可以回帖 登录 | 立即注册

快速回复 返回顶部 返回列表