网页技术交流
 
发新帖
楼主: 零五零八
查看: 1317|回复: 0

[自由交流] 关于HTML5+ API plusready的兼容问

[复制链接]
零五零八 发表于 2021-1-26 14:31:11 | 显示全部楼层
本帖最后由 零五零八 于 2021-1-26 14:35 编辑

Android平台提前注入5+ API,支持在plusready事件前调用
在5+ Runtime环境中,通常情况下需要html页面解析完成后才会注入5+ API,执行的顺序为:
     1. 加载html页面
     2. 解析html页面(下载script/link等节点引用的资源,如js/css文件)
     3. 触发DOMContentLoaded事件
     4. 注入5+ API      
     5. 触发plusready事件这样导致5+ API生效时间比较延后,在html中引用js执行之后才能调用5+ API,通常采用以下代码调用5+ API:


  1. <font size="4" style="font-weight: normal;" face="宋体">document.addEventListener('plusready',function () {
  2.         // 在这里调用5+ API
  3.         // 如获取设备唯一标识 plus.device.uuid
  4. },false); </font>
复制代码

但是在新版本中,将支持提前注入5+ API,可以在plusready事件触发之前调用5+ API,提前引入节点:
  1. <font size="4" face="宋体" style="font-weight: normal;"><script src="html5plus://ready"></script></font>
复制代码


兼容写法:


  1. <font size="4" face="宋体" style="font-weight: normal;">if(window.plus){
  2.     // 在这里调用5+ API
  3. }else{// 兼容老版本的plusready事件
  4.     document.addEventListener('plusready',function () {
  5.         // 在这里调用5+ API
  6.     },false);
  7. }</font>
复制代码


注意:
   1. 仅仅是提前注入5+ API,并不会提前触发plusready事件(仅步骤4提前操作了)
   2. Android3.0及以上平台才支持提前注入,Android2.*版本无法提前注入
   3. 在流应用环境中的wap2app会自动提前注入(第一次引用网络js时注入),不需要添加<script src="html5plus://ready"/>节点





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