2012-05-22 47 views
1

有沒有辦法從Internet Explorer 7/8錯誤對象檢索行號?從Internet Explorer錯誤對象檢索行號

我只知道.message,.description和.number屬性。

我已經搜索了一下週圍,發現在.STACK的MSDN文章(http://msdn.microsoft.com/en-us/library/hh699850(v=vs.94).aspx),但即使是使用自己的示例代碼不返回行號:

http://jsfiddle.net/LWevS/

+0

確實[這個問題](http://stackoverflow.com/questions/1506593/need-to-find-actual-location-of-line-char-in-internet-explorer-script-錯誤)幫助? –

+0

不幸的是,我沒有爲開發目的設置調試器,而是一旦代碼生產。我們希望能夠打開JS錯誤日誌記錄並存儲行號,而不僅僅是錯誤的描述。 –

+0

您應該編輯您的問題以添加該信息,因爲它會在可能的答案中產生差異。 –

回答

5

我周圍挖多一些,發現可以使用window.onerror在IE中檢索行號。這不是從錯誤的對象本身,但它是一個不錯的解決方法:

function BadFunction(){ 
    This.badcode.willnot.work = 1000 
} 

function ForceError(msg, url, lno) { 
    alert("Error Occurred! Handled by Generic Error Handler" + "\n" + 
    "Error: " + msg + "\n" + "URL: " + url + "\n" + 
    "Line Number: " + lno); 

    return true; 
} 

window.onerror = ForceError; 

這種方法要求誤差泡到窗口。如果你的代碼中有try/catch,你將需要重新拋出錯誤,以便它可以冒泡。

在研究此問題的解決方案時,我也遇到了GitHub上的StackTraceJS。他們的堆棧跟蹤腳本在除Internet Explorer之外的所有瀏覽器上都能很好地工作。一個偉大的運行時調試器,如果你想記錄客戶端瀏覽器上產生的錯誤。

http://stacktracejs.com/

+1

如何在try..catch中重新拋出錯誤!你能舉個例子嗎? – deepakb