热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Cordova3.x基础(4)deviceready事件

2019独角兽企业重金招聘Python工程师标准Cordova框架中第一个应该掌握的就是这个deviceready事件。采用Cordova开发的应用在运行的时候,

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

Cordova框架中第一个应该掌握的就是这个deviceready事件。采用Cordova开发的应用在运行的时候,Cordova提供的通过HTML5调用Native功能并不是立即就能使用的,Cordova框架在读入HTML5代码之后,要进行HTML5和Native建立桥接,在未能完成这个桥接的初始的情况下,是不能调用Native功能的。在Cordova框架中,当这个桥接的初始化完成后,会调用他自身特有的事件,即deviceready事件。 

所以首先应该在HTML中注册deviceready的事件监听,在它的CallBack函数中再去使用Cordova的功能。 

Js代码  收藏代码

  1. document.addEventListener('deviceready'function () {  

  2.   console.log('Device is Ready!');  

  3.   // ....your code  

  4. }, false);  



需要注意的是,deviceready事件是在每回读入HTML的时候都会被调用,而不只是应用启动时调用。 

除了deviceready事件以外,Cordova应用在内部读取HTML代码的时候还会调用一些其他的事件。但这些并不是Cordova框架提供的事件,而是嵌入的Webview的浏览器Render引擎提供的。 

DOMContentLoaded事件 
页面的DOM内容加载完成后即触发,而无需等待其他资源(CSS、JS)的加载。 

load事件 
在DOMContentLoaded事件之后,其他资源加载完成后触发。 

所以,其实调用的顺序是:DOMContentLoaded -> load -> deviceready 
deviceready事件一定是在load事件之后,所以load事件的执行速度会影响到deviceready事件的调用。把一些不必要的资源可以在deviceready事件之后调用从而提高执行速度。 

Js代码  收藏代码

  1. document.addEventListener('DOMContentLoaded'function () {  

  2.   console.log('DOMContentLoaded OK!');  

  3. }, false);  

  4.   

  5. window.addEventListener('load'function () {  

  6.   console.log('load OK!');  

  7. }, false);  

  8.   

  9. document.addEventListener('deviceready'function () {  

  10.   console.log('deviceready OK!');  

  11. }, false);  


01145158_fjeF.png 

需要注意的是,在Cordova的app中如果js执行失败,前台不会有任何提示(后台会出log),所以很多时候点击都没有任何反应,那说明JS执行出错了,把以下代码加到index.html中,当应用发生JS错误的时候,会调用window的onerror方法从而显示错误信息,从而捕获Javascript的Error提示用户。 

Js代码  收藏代码

  1. window.onerror = function(msg, url, line) {  

  2.    var idx = url.lastIndexOf("/");  

  3.    if(idx > -1) {  

  4.     url = url.substring(idx+1);  

  5.    }  

  6.    alert("ERROR in " + url + " (line #" + line + "): " + msg);  

  7.    return false;  

  8. };  


01145158_7pmx.png 



转:https://my.oschina.net/ecoolper/blog/423397



推荐阅读
author-avatar
那年磕长头
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有