javascript – 在window.onerror中捕获错误?

前端之家收集整理的这篇文章主要介绍了javascript – 在window.onerror中捕获错误?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经设置了一个window.onerror处理程序来捕获错误.它的目的?要在每次发生错误时连接一个字符串,然后另一个处理程序window.onunload将其发送到服务器. (据推测有所有错误).

问题是,它只能发送第一个错误,因为在第一次触发onerror处理程序事件后,错误没有被捕获,因此脚本终止…

有没有解决的办法?

@H_403_6@ErrorManager: (function () { function Init(message) { InitErrorHandler(); InitAjaxHandler(); setTimeout("Interface.ErrorManager.SendErrorsToAjax()",8000); } function InitErrorHandler() { Data.ErrorHandlerText = ""; Data.ErrorHandlerCount = 0; window.onerror = function(errorMessage,url,line) { if(IsInIgnoreList(errorMessage)) { return; } Data.ErrorHandlerText += ("Error: "+(Data.ErrorHandlerCount+1)+" <br /><br />"); //Get error specific info Data.ErrorHandlerText += escape(errorMessage) + "<br />"; Data.ErrorHandlerText += escape(url) + "<br />"; Data.ErrorHandlerText += escape(line) + "<br />"; Data.ErrorHandlerCount++; console.log("BOOM"+errorMessage); } } function InitAjaxHandler() { window.onbeforeunload = function() { //when browser closed Data.ErrorHandlerCount > 0 && SendErrorsToAjax(); } } function SendErrorsToAjax() { PrepareErrorsForAjax(); $.getJSON(Interface.Utility.PrefixURL('/ajax/sendFeedback/handlejserrors/'+Data.ErrorHandlerText)); } function IsInIgnoreList(str) { return str.indexOf('nsIDOMSVGLocatable') != -1 ? true : false; } function PrepareErrorsForAjax() { var preText = "<br /><br />A user has encountered a few errors: <br /><br />"; //Get session info var userAgent,activePageID,accountNO,consumerNO; userAgent = escape(navigator.userAgent); preText += "User agent: "+userAgent+" <br />"; if($.mobile.activePage) { activePageID = $.mobile.activePage.attr('id'); preText += "Page ID: "+activePageID+" <br />"; } //Get info that may or may not be set console.log("AUTH JSON "+Data.authJSON); console.log("CONSUMER JSON "+Data.authJSON.consumers); if(Data.authJSON && localStorage.lastConsumerNo) { preText += "Account Number: " +Data.authJSON.accountId+" <br />"; preText += "Consumer Number: "+ localStorage.lastConsumerNo+" <br />"; } preText += "<br /> The following errors were encountered:<br /><br />"; Data.ErrorHandlerText = preText + Data.ErrorHandlerText; } return { Init: Init,SendErrorsToAjax: SendErrorsToAjax } })(),

解决方法

将其添加到单独的< script>标记,以便window.onerror不会被其他脚本标记中的脚本错误所困扰.

DEMO

@H_403_6@<script> var trackErrorMsg = ''; window.onerror = function(msg,lineNo) { trackErrorMsg += msg; } </script>

请注意,以上内容并不会阻止在浏览器控制台中记录错误.上面的代码只是为了跟踪错误..您应该使用try…catch来处理任何特定部分中的错误.

DEMO显示在同一执行上下文中它不起作用时.

原文链接:https://www.f2er.com/js/150682.html

猜你在找的JavaScript相关文章