如果有小伙伴看过 mui.js 的源码的话,对于以下代码就不会陌生。

var plusReady = function (callback) {

if (window.plus) {

callback();

} else {

document.addEventListener('plusready', callback);

}

};

这个方法,是用来确保 5+ API 扩展成功了,在这个方法的回调中调用 5+ 扩展 API,不会出现 plus is not defined 错误。

因为 Android 和 iOS 的一些机制不同,再加上不同的 ROM 和 Webview 都会对 5+ 扩展 API 的注入生效有所影响。

因此,实际应用中判定扩展完成,并不能单靠 plusready 事件。

情况一

在页面加载完成之前就已经触发了 plusready 事件,window.plus 扩展对象已经存在了。这时候,是不会重复触发 plusready 事件了。因此,在页面中是监听不到 plusready 事件了。也就有了先判定 window.plus 是否存在的逻辑。

情况二

页面加载后,扩展 API 加载完成,触发 plusready 事件。此时,是可以在页面中监听到 plusready 事件的。因此,就有了监听 plusready 事件触发的逻辑。

考虑到以上这些情况,就可以确保在这个 plusReady 的回调中,调用扩展的 window.plus 对象不会出现未定义的情况。

但是依旧有特殊的情况,那就是页面中本身引入了其它框架或者自己定义了 window.plus 对象,约定的原生能力扩展对象 window.plus 被占用了。

应当避免这种情况的发生,即便是引入其它库,也是可以修改其源码来处理的。

前面提到了,5+ 扩展 API 注入的时机是不确定的,因此如果只是单一的将已存在的 window.plus 对象重新赋值给其它变量,也会造成一定的隐患。

plusReady(function () {

alert(plus.runtime.appid);

});

plusready html5,封装一个简单实用的 plusready 方法相关推荐

  1. 封装一个简单实用的朋友圈

    前言 2014年过的那么快,过年又那么块,2015年又是飞快地节奏,真尼玛感觉上帝是不是无聊使用了变速外挂开启了加速模式~到现在博主都无法接受已 经上班的事实--在地铁脸被挤在玻璃上的时候只能用眼神写 ...

  2. html+css+小图标,HTML+CSS入门 一个简单实用的CSS loading图标

    本篇教程介绍了HTML+CSS入门 一个简单实用的CSS loading图标,希望阅读本篇文章以后大家有所收获,帮助大家HTML+CSS入门.< 在web开发中,为了提高用户体验,在加载数据的时 ...

  3. Qt 封装一个简单的LED(指示灯)控件

    Qt 封装一个简单的LED(指示灯)控件 1,效果~ 所以 这个简单的LED类可以自定义大小~ 可以点亮或熄灭,也可以闪烁

  4. 一个简单实用的SSAO实现

    转自 http://blog.csdn.net/xoyojank/article/details/5734537 by José María Méndez 原文链接: http://www.gamed ...

  5. Java实现一个简单的加密解密方法

    Crypto是Java语言写的一个简单的加密解密方法. 使用方法: 加密方法 String cipherte=Enande.encrypt(content, pass): 解密方法 Enande.de ...

  6. 封装一个类似jquery的ajax方法

    //封装一个类似jquery的ajax方法,当传入参数,就可以发送ajax请求 //参数格式如下{// type:"get"/"post", // dataTy ...

  7. Verilog——Chipscope简单实用的使用方法(基于ISE14.7 )

    Verilog--Chipscope简单实用的使用方法(基于ISE14.7 ) FPGA程序设计也避免不了需要进行在线调试工作,XILINX的ISE提供了Chipscope工具进行在线调试. 但之前查 ...

  8. 一个简单实用的,基于EF的三层架构

    到底什么样的框架才是好框架呢?或许不同人有不同的看法.我个人觉一个好的框架,最重要的要是简单实用,能快速适开发,可维护性高(不会出现复制黏贴的代码),并能快速响应各种业务场景的变化的框架,同时性能不会 ...

  9. easyeda,一个简单实用的探索性数据分析工具

    在算法工程师的日常工作中,探索性数据分析(Exploratory Data Analysis)是一种常见的任务.通过分析数据的缺失情况,分布情况,以及和标签的相关性等,数据EDA可以帮助算法工程师评估 ...

最新文章

  1. git更改已提交作者用户名
  2. 2560x1600分辨率高吗_手机屏幕分辨率真的越高越好?它的好处和坏处你知道吗?...
  3. 二维数组及其指针基础
  4. virtuoso根据原理图绘制版图并联接_版图绘制及Virtuoso软件工具使用.ppt
  5. JAVA连接MYSQL数据库
  6. java中md5怎么实现的_java中md5算法的实现
  7. 用Java解析:您可以使用的所有工具和库
  8. tomcat7 1000并发量配置 tomcat7配置优化
  9. c语言头文件格式图片_阿波罗 STM32F767 开发板资料连载第四十九章 图片显示实验...
  10. SpringCloud之Eureka
  11. 防火墙配置十大任务之五,有NAT的两个接口的配置
  12. led闪烁和流水灯代码
  13. java 文件存在 覆盖_java – 如果文件存在于目录中,我该如何覆盖它
  14. MiniDP与HDMI的关系
  15. c语言的pow函数运用
  16. 基于Python的自动聊天机器人
  17. Inspector检视视图
  18. 不止Alexa和AWS,揭秘亚马逊人工智能发展史
  19. ②号团队【扫黑除恶Team】-团队任务5:项目总结会
  20. 别再花时间统计考勤数据了,这个报表统计神器才是你最后出路

热门文章

  1. c++代码表白_微信表情翻译成文字代码,微信表情翻译我喜欢你[多图]-软件资讯...
  2. matlab读取xlsx文件,从电子表格读取数据
  3. Java【第九篇】异常处理
  4. cloudera cdh5.13.0 vmware 快速安装
  5. ASP.NET页面之间传值的方式之Cookie(个人整理)
  6. 【有容云案例系列】基于Jenkins和Kubernetes的CI工作流
  7. Java中的装箱和拆箱剖析
  8. VC++ 获得程序运行根目录 汇编源码
  9. 那朵美丽的格桑花,你是否依然绽放?
  10. 《操作系统》——第一章 计算机系统概述