我已經加入到日誌發生在瀏覽器到我的服務器端日誌事件,這就意味着JavaScript window.onerror錯誤:限制只在我的劇本
這將消息發送到我的服務器(使用,就像我會使用的console.log登錄正常運行過程中的關鍵事件)
function remoteConsoleLog(msgToLog, msgDesc) {
$.ajax({
type: 'POST',
url: '/php/log_javascript_events.php',
data: JSON.stringify({UA: navigator.userAgent, MSG: msgToLog, MSGDESC: msgDesc}),
contentType: 'application/json; charset=utf-8'
});
}
這是上面的包裝來捕捉其他錯誤(基於this):
window.onerror = function (errorMsg, url, lineNumber, column, errorObj) {
remoteConsoleLog(errorMsg, 'window onerror');
}
這效果很好,我可以在我的服務器日誌文件中獲得所有期望的事件。然而,問題在於我收到了一些我從window.onerror處理程序中不期望的錯誤,例如通用的「腳本錯誤」(我已經看到這可能是一個CORS問題)以及其他非常具體的錯誤,例如
Uncaught ReferenceError: DealPly is not defined
(它似乎涉及與我的網站無關的瀏覽器插件)。
我的網站使用了一些外部JS文件,如JQuery等。有沒有什麼辦法可以記錄包含我的日誌記錄的JavaScript文件生成的錯誤,即排除第三方錯誤 - 或者甚至是一件好事情要做?
根據以下回復我剛剛修改了包裝 - remoteConsoleLog(errorMsg,'window onerror'+ url); - 記錄腳本名稱並過濾服務器端 – KevInSol
你知道是什麼原因導致'DealPly未定義'錯誤?我們由於某種原因開始看到它。 – Bainternet