2012-11-25 78 views
1

我正在使用Ripple 0.9.9來測試PhoneGap 2.0應用程序,但在設置時遇到了麻煩。我已閱讀此網站上的相關問題,但沒有解決我的問題:Onload事件觸發兩次,deviceready根本不觸發

根據phonegap deviceready event - ripple emulator - 漣漪模擬器將ripple.js注入頁面,其中包含phonegap API模擬器。因此,在Ripple中測試時,請勿在您的頁面中包含phonegap.js/cordova.js。

使用<body onload="onLoad()">打電話給我onload處理,我有以下的JavaScript:

var mobile=false; 

function onLoad() { 
console.info("inside onload..."); 
var uA = navigator.userAgent; 
if (uA.match(/(iPhone|iPod|iPad|Android|BlackBerry)/)) { 
    console.info("on phone: " + navigator.userAgent); 
    document.addEventListener("deviceready", function() { mobile=true; appReady(); }, false); 
} else { 
    if (uA.match(/Chrome/)) { 
     console.info("on browser: " + navigator.userAgent + ", do not initiate mobile app for Chrome since will be init. by Ripple"); 

    } else { 
     /* not running on Chrome so no Ripple */ 
     appReady(); 
    } 
} 

} 

當我運行紋波模擬器裏面我的index.html(設置的PhoneGap /科爾多瓦2.0)在iPhone 4上運行我看到下面的調試(init.js是我的js文件):

inside onload... init.js:19 

on browser: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) 

Chrome/23.0.1271.64 Safari/537.11, do not initiate mobile app for Chrome since will be init. by Ripple init.js:26 

Ripple :: Environment Warming Up (Tea. Earl Gray. Hot.) ripple.js:475 

cordova :: Initialization Finished (Make it so.) ripple.js:475 

inside onload... init.js:19 

on phone: Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; en-us) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/1A542a Safari/419.3 

我可以看到的onload事件被觸發兩次:a)對於普通的瀏覽器和b)似乎紋波改變用戶代理到iPhone 4,然後重新加載頁面。

這是正常的行爲嗎?

'deviceready'事件永遠不會被調用。任何想法爲什麼不呢?

+0

你找到了這個傑里米的答案嗎?我在同一條船上。 –

回答

0

對於已準備好設備的事件,請確保您已從Ripple的左側「平臺」面板啓用phonegap平臺。如果使用非PhoneGap平臺,那麼我會想象deviceready事件不會被解僱。

至於雙頁面重新加載,是的,這是一個Ripple的臨時行爲,旨在強制某些頁面事件以必要的順序發生。然而最新版本(0.9.11)已經解決了這個問題。你的內容已經被加載後,你不應該看到Ripple強制額外的頁面加載。

推薦更新到0.9.11