2012-03-05 28 views
6

我有一個phonegap應用程序拋出一個javascript錯誤。我已經在桌面上的瀏覽器中打開了HTML頁面,它在那裏沒有任何錯誤地正常工作。當我在android模擬器中加載它時,window.onerror事件被解僱了,但我在錯誤對象中看不到任何有用的信息來查看它來自哪裏。我有這個嘗試從錯誤對象中獲得更多的信息:找到我在android上得到的javascript錯誤

window.onerror = function(e){ 
    for(var i in e){ 
     console.log("window.onerror ::" + i + ' = ' + e[i]); 
    } 
}; 

但我甚至沒有看到'message'屬性。這裏的輸出:

window.onerror ::undefined 
window.onerror ::eventPhase = 3 
window.onerror ::currentTarget = [object DOMWindow] 
window.onerror ::cancelable = false 
window.onerror ::target = [object HTMLScriptElement] 
window.onerror ::bubbles = true 
window.onerror ::type = error 
window.onerror ::cancelBubble = false 
window.onerror ::clipboardData = undefined 
window.onerror ::srcElement = [object HTMLScriptElement] 
window.onerror ::defaultPrevented = false 
window.onerror ::timeStamp = 1330975112077 
window.onerror ::returnValue = true 
window.onerror ::stopPropagation = function stopPropagation() { [native code] } 
window.onerror ::preventDefault = function preventDefault() { [native code] } 
window.onerror ::initEvent = function initEvent() { [native code] } 
window.onerror ::stopImmediatePropagation = function stopImmediatePropagation() { [native code] } 
window.onerror ::CAPTURING_PHASE = 1 
window.onerror ::AT_TARGET = 2 
window.onerror ::BUBBLING_PHASE = 3 
window.onerror ::MOUSEDOWN = 1 
window.onerror ::MOUSEUP = 2 
window.onerror ::MOUSEOVER = 4 
window.onerror ::MOUSEOUT = 8 
window.onerror ::MOUSEMOVE = 16 
window.onerror ::MOUSEDRAG = 32 
window.onerror ::CLICK = 64 
window.onerror ::DBLCLICK = 128 
window.onerror ::KEYDOWN = 256 
window.onerror ::KEYUP = 512 
window.onerror ::KEYPRESS = 1024 
window.onerror ::DRAGDROP = 2048 
window.onerror ::FOCUS = 4096 
window.onerror ::BLUR = 8192 
window.onerror ::SELECT = 16384 
window.onerror ::CHANGE = 32768 

我還能做些什麼來發現問題?

+0

那麼你可以調試代碼...? – gdoron 2012-03-05 19:54:46

+0

我不知道,可以嗎?我剛剛安裝了eclipse - 我從未使用它或任何其他Java工具。你可以在它的JavaScript類中設置斷點,或者將它設置爲在任何javascript異常時自動打斷? – adam0101 2012-03-05 20:02:47

+0

自從我使用eclipse以來,已經有一段時間了,不知道......但是在VS中你可以。 =) – gdoron 2012-03-05 20:04:31

回答

3

現在你可以安裝Chrome for Android和遠程調試/在你將與常規的鉻做同樣的方式來分析你的應用程序:
http://code.google.com/chrome/mobile/docs/debugging.html

在模擬器上安裝Chrome:

它可能需要一段時間來安裝。然後按照說明遠程調試您的Web應用程序

+0

我沒有將應用程序部署到移動設備,只是從eclipse啓動的android模擬器。這是否適用於我? – adam0101 2012-03-05 20:24:29

+0

我編輯答案與模擬器的更多細節 – 2012-03-05 20:43:12

+0

看起來很有希望。我必須嘗試一下。 – adam0101 2012-03-06 19:12:11

0

由於錯誤處理程序實際上傳遞了多個參數,所以您需要記錄這些參數。

例如,

window.onerror = function(e,f,g){ 
    console.log("window.onerror ", e, f, g); 
};