2014-04-02 25 views
4

我的網站上有一些errorlogging代碼,它可以將Javascript錯誤保存到文件中,以便稍後我可以查看在某些瀏覽器中是否存在代碼問題。window.onerror和[對象事件]

有時我會收到類似的錯誤消息:[object Event] url:undefined line:undefined所以我不知道錯誤在哪裏。

我如何獲得更多的信息從消息當它是[對象事件]這樣我就可以知道錯誤是從哪個文件和行號。

window.onerror = error; 

function error(message, url, line) { 

    // sometimes message is [object Event] 

} 

我認爲是這樣的。

window.onerror = error; 

function error(message, url, line) { 

    // sometimes message is [object Event] 


    if (typeof message === 'object') { 

     message = message 
      + ' + ' 
      + message.url 
      + ' + ' 
      + message.lineno; 

    } 

} 

嘗試此,但我得到未捕獲的類型錯誤:對象#沒有方法 '的serialize'

if (typeof message === 'object') { 

    message = JSON.serialize(message); 

} 

隨着JSON.stringify(消息)我得到未捕獲的類型錯誤:轉換圓形結構,以JSON

if (typeof message === 'object') { 

    message = JSON.stringify(message); 

} 
+0

你有沒有想過這一個?我有同樣的問題。 –

回答

0

的情況下你喜歡的東西JS中的210,通常意味着它是一個對象。您可以執行console.log(message)並檢查對象的內容。它看起來像

{ 
    somethingHere : 'data', 
    anotherHere : 'more data' 
} 

要訪問它們,你可以在點符號做:

theObject.somethingHere //data 

在你的情況,這將是這樣的,在那裏something是從對象的關鍵。

message.something 
+0

謝謝,但錯誤來自其他人訪問我的網站時使用任何瀏覽器/程序,所以我無法打開控制檯。 – scootergrisen

+0

@scootergrisen我想你應該將消息序列化爲一個字符串,而不是像'message = JSON.serialize(message)'。這樣,你將錯誤對象作爲一個字符串。 – Joseph

+0

好吧,我等待同樣的錯誤再次來,所以我可以選擇結果。 – scootergrisen

0

在哪個瀏覽器或瀏覽器中看到這個[Event object]消息發生?檢查對象的內容的一種可能的方式是:

var messageString = ''; 
for (var x in message) { 
    if (messageString) messageString += ', '; 
    messageString += x + ': ' + message[x]; 
} 
message = '{' + messageString + '}'; 

如果你可以給任何一種可重複的測試案例的這個消息的onerror,包括瀏覽器版本上是發生了,這將有很大的幫助。