ios上plus是一直存在的,不涉及等ready事件。但安卓上还是需要等plus ready。

在安卓环境中,通常情况下需要html页面解析完成后才会让5+ API生效,安卓的执行的顺序为:

加载html页面,loading

解析html页面(解析title节点、下载script/link等节点引用的资源,如js/css文件)

触发DOMContentLoaded事件

这样导致5+ API生效时间比较延后,通常采用以下代码等待plus ready后再调用5+ API:

document.addEventListener('plusready',function () {

// 在这里调用5+ API

},false);

我们总是在不停追求性能优化,生效时间越早,我们可以把app的体验做的更好。

在HBuilder7.5版本之后安卓版支持提前注入5+ API,可以在plusready事件触发之前调用5+ API,操作方法是在页面中添加以下节点:

,示例如下:

HTML5+ API

// 这里可以调用5+ API了,为了更好的兼容性,应该使用以下代码进行判断

if(window.plus){

// 在这里调用5+ API

}else{// 兼容老版本的plusready事件

document.addEventListener('plusready',function () {

// 在这里调用5+ API

},false);

}

Hello HTML5 plus.

注意

5+ API虽然可以提前生效,但为了不引发向下兼容问题,plusready事件并不会提前触发,该事件仍然保持原来的触发时机;

提前生效的Plus api,操作时需注意,此时DOMContentLoaded事件高概率未触发,此时操作dom会失败,操作dom也还是得等到DOMContentLoaded后;

Android3.0及以上平台才支持提前生效,Android2.*版本不支持此功能;

应用场景举例

定位

很多app的页面是根据位置来显示内容的,如果在DOMContentLoaded后再请求位置,然后再提交服务器获取该位置周边的商家列表,这样就会慢。而提前使用plus api获取位置,就可以加速页面显示速度。尤其对于首页就要拉周边信息的app更重要。

父子页面加载

如果页面是父子webview布局,过去是父页面在触发plusready后再创建子页面,导致整体页面显出出来比较慢。如果让plus api提前生效,我们可以无需等待父页面plusready就直接创建子页面。

另外,HBuilder在2017年起的版本,支持双首页,如果首页是父子页面,建议把这2个页面都配到manifest里形成双首页,此时原来的子页面并不需要等父页面的plus ready才创建。而非首页的二级页面,其实也不建议用父子页面,而是使用nativeobj里的原生view来做title,不用webview来做title。

应用场景还有很多,优化无极限,欢迎高手继续研究。

plusready html5,Android平台5+ API提前生效,支持在plusready事件前调用相关推荐

  1. android sdk 封装html5,Android平台以WebView方式集成HTML5+SDK方法

    HTML5+ SDK 可以按照"独立应用"和"单页面"两种种方式进行集成,两种集成方式各有优点. 独立应用集成方式:即Widget集成方式,开发者在集成后可在需 ...

  2. Android 让你的SeekBar 也支持长按事件

    SeekBar 本身有就是一个View 对象,既然是View 对象那也证明它有setOnLongClickListener 事件,众所周知,这个事件是让一个View 对象拥有长按功能,进而达到我们想要 ...

  3. Android平台版本-API级别与版本号对照表,移动开发技术导论答案

    | Android 5.0 | 21 | [LOLLIPOP]( ) | | Android 4.4W | 20 | [KITKAT_WATCH]( ) | 仅限 KitKat for Wearabl ...

  4. Android平台 Target API level 升级到 31,在Android 12上启动黑屏卡死

    项目的SDK要升级,要把Target API level调整31.项目使用的是Unity2017.4.x,接完SDK后打完APP包装到手机上,启动直接黑屏.看Log,也没定位到具体的原因.然后网上搜索 ...

  5. 【第四篇章-android平台MediaCodec】推断是否支持硬件解码码

    public boolean isSupportMediaCodecHardDecoder(){boolean isHardcode = false;//读取系统配置文件/system/etc/med ...

  6. html5 plus 兼容,H5+ API plusready的兼容

    Android平台提前注入5+ API,支持在plusready事件前调用 在5+ Runtime环境中,通常情况下需要html页面解析完成后才会注入5+ API,执行的顺序为: 1. 加载html页 ...

  7. Android平台第三方插件开发指导(dcloud)

    技术架构 HTML5+ 基座扩展采用三层结构,JS层.PluginBridge层和Native层. 三层功能分别是: JS层: 在Webview页面调用,触发Native层代码,获取执行结果. Plu ...

  8. Android平台安全模型(The Android Platform Security Model)

    版权声明:本文为CSDN博主「ashimida@」翻译的文章,转载请附上出处链接和本声明. 本文链接:https://blog.csdn.net/lidan113lidan/article/detai ...

  9. cocos2d js调用java_【cocos2d-js官方文档】二十四、如何在android平台上使用js直接调用Java方法...

    在cocos2d-js 3.0beta中加入了一个新特性,在android平台上我们可以通过反射直接在js中调用java的静态方法.它的使用方法很简单: var o = jsb.reflection. ...

最新文章

  1. DvaJS 入门, 快速上手Dva
  2. 单例模式 之 单例模式——懒汉模式
  3. java 断点续传 开源_java断点续传原理
  4. LeetCode之Next Greater Element I
  5. NAU8810相关问题
  6. php 标点符号,php 过滤英文标点符号及过滤中文标点符号代码
  7. cpprestsdk编译安装linux,使用C++ REST SDK开发简单的Web(HTTP)服务
  8. spring p2p项目html,springboot2.x项目实战视频教程p2p金融中等项目
  9. Ruby的Range类
  10. Ubuntu18.04无法连接向日葵服务器的问题及解决
  11. 金蝶k3数据库服务器信息,金蝶k3如何查询连接的服务器配置
  12. 帆软报表决策系统自定义登录界面 使用验证码登录 教程二
  13. 解释PBR纹理贴图(texture-maps)
  14. 计算机二级证能落户嘛,有哪些二级技师证可以办理落户深圳 - 入户吐槽网
  15. Nordic fds 文件系统源码探究
  16. creo扫描选择多条链作为轨迹_Creo与Proe可变截面扫描关系式雨伞建模实例-一加一学院...
  17. 数学作图工具_数学趣览X 曾让古希腊人犯怵的三大几何作图难题
  18. 家政维修小程序+上门预约小程序+VUE前后端分离+uniapp(附近师傅+门店入驻+在线抢单服务APP、小程序、公众号、H5)
  19. latex公式斜体_latex输入斜体
  20. cocos-creator使用记录5_发布微信小游戏

热门文章

  1. onlyoffice5.4.2个人二次开发记录-中文字体
  2. 新版中日交流标准日本语.单词
  3. 所谓的去中心化,其实就是要告别平台为主导的发展模式
  4. VUE扩展运算符(...)
  5. python财务工作者作用_廉政建设对于财务工作者的重要性
  6. docker命令大全以及常用写法举例
  7. CAD制图软件中绘制的彩色图纸打印出来后变成灰色了怎么办?
  8. 杨大腔调近期作息时间一览
  9. 计算机整机性能配置,整机配置综合性能
  10. Windows:编写.bat脚本实现文件复制