在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ 嵌入式/ deviceready 事件
云端 Cordova
UI 框架 jQuery Mobile
配置文件 config.xml
UI 框架 Ionic Framework
Plugin 開(kāi)發(fā)
slides & books
應(yīng)用圖標(biāo) icon 和啟動(dòng)頁(yè)面 SplashScreen
Sample 工程解析
使用 Hooks 自定義 build 過(guò)程
JS 是如何調(diào)用本地 API 的?
deviceready 事件
為 Android APK 簽名
調(diào)試工具 Debug
幾個(gè)不可或缺的 lib
環(huán)境搭建(Windows / Android)
Native API 的使用

deviceready 事件

Cordova 框架中第一個(gè)應(yīng)該掌握的就是這個(gè) deviceready 事件。采用 Cordova 開(kāi)發(fā)的應(yīng)用在運(yùn)行的時(shí)候,Cordova 提供的通過(guò) HTML5調(diào)用 Native 功能并不是立即就能使用的,Cordova 框架在讀入 HTML5代碼之后,要進(jìn)行 HTML5和 Native 建立橋接,在未能完成這個(gè)橋接的初始的情況下,是不能調(diào)用 Native 功能的。在 Cordova 框架中,當(dāng)這個(gè)橋接的初始化完成后,會(huì)調(diào)用他自身特有的事件,即 deviceready 事件。

所以首先應(yīng)該在 HTML 中注冊(cè) deviceready 的事件監(jiān)聽(tīng),在它的 CallBack 函數(shù)中再去使用 Cordova 的功能。

Js 代碼

document.addEventListener('deviceready', function () {
  console.log('Device is Ready!');
  // ....your code
}, false);

需要注意的是,deviceready 事件是在每回讀入 HTML 的時(shí)候都會(huì)被調(diào)用,而不只是應(yīng)用啟動(dòng)時(shí)調(diào)用。

除了 deviceready 事件以外,Cordova 應(yīng)用在內(nèi)部讀取 HTML 代碼的時(shí)候還會(huì)調(diào)用一些其他的事件。但這些并不是 Cordova 框架提供的事件,而是嵌入的 Webview 的瀏覽器 Render 引擎提供的。

DOMContentLoaded 事件

頁(yè)面的 DOM 內(nèi)容加載完成后即觸發(fā),而無(wú)需等待其他資源(CSS、JS)的加載。

load 事件

在 DOMContentLoaded 事件之后,其他資源加載完成后觸發(fā)。

所以,其實(shí)調(diào)用的順序是:DOMContentLoaded -> load -> deviceready deviceready 事件一定是在 load 事件之后,所以 load 事件的執(zhí)行速度會(huì)影響到 deviceready 事件的調(diào)用。把一些不必要的資源可以在 deviceready 事件之后調(diào)用從而提高執(zhí)行速度。

Js 代碼

document.addEventListener('DOMContentLoaded', function () {
  console.log('DOMContentLoaded OK!');
}, false);

window.addEventListener('load', function () {
  console.log('load OK!');
}, false);

document.addEventListener('deviceready', function () {
  console.log('deviceready OK!');
}, false);

http://wiki.jikexueyuan.com/project/cordova-3.x-primer-foundation/images/4.1.png" alt="picture4.1" />

需要注意的是,在 Cordova 的 app 中如果 js 執(zhí)行失敗,前臺(tái)不會(huì)有任何提示(后臺(tái)會(huì)出 log),所以很多時(shí)候點(diǎn)擊都沒(méi)有任何反應(yīng),那說(shuō)明 JS 執(zhí)行出錯(cuò)了,把以下代碼加到 index.html 中,當(dāng)應(yīng)用發(fā)生 JS 錯(cuò)誤的時(shí)候,會(huì)調(diào)用 window 的 onerror 方法從而顯示錯(cuò)誤信息,從而捕獲 JavaScript 的 Error 提示用戶(hù)。

Js 代碼

window.onerror = function(msg, url, line) {
   var idx = url.lastIndexOf("/");
   if(idx > -1) {
    url = url.substring(idx+1);
   }
   alert("ERROR in " + url + " (line #" + line + "): " + msg);
   return false;
};

http://wiki.jikexueyuan.com/project/cordova-3.x-primer-foundation/images/4.2.png" alt="picture4.2" />