Javascript에서 "window.onerror"를 사용하면 "window.onerror = function(msg,url,line,col,error){...}"와 같은 코드로 구문 오류를 확인하고 런타임 오류를 잡을 수 있습니다.
이 문서의 운영 환경: Windows 7 시스템, JavaScript 버전 1.8.5, Dell G3 컴퓨터.
Javascript 구문 오류를 확인하는 방법
JavaScript의 오류 확인 방법:
try-catch 제한 사항(이 방법은 javascript가 오류를 처리하는 방법에서 볼 수 있습니다.)
잡히지 않습니다. 구문 오류(코드가 전혀 실행되지 않기 때문에...)
모든 함수 블록과 파일 블록을 추가하여 시도하고 잡으려면 도구를 사용해야 합니다
Usewindow.onerror
구문 오류와 런타임을 잡으려면 ;
오류 정보, 스택, 오류 파일, 줄 번호, 열 번호를 얻을 수 있습니다.
현재 페이지에서 실행된 js 스크립트의 모든 오류는 다음과 같이 캡처됩니다. 또는 플래시가 던져진 예외 등
교차 도메인 리소스에는 특별한 헤더 지원이 필요합니다.
일반적인 오류 처리 절차는 다음과 같습니다.
window.onerror = function(msg,url,line,col,error){ //没有URL不上报!上报也不知道错误 if (msg != "Script error." && !url){ return true; } //采用异步的方式 //我遇到过在window.onunload进行ajax的堵塞上报 //由于客户端强制关闭webview导致这次堵塞上报有Network Error //我猜测这里window.onerror的执行流在关闭前是必然执行的 //而离开文章之后的上报对于业务来说是可丢失的 //所以我把这里的执行流放到异步事件去执行 //脚本的异常数降低了10倍 setTimeout(function(){ var data = {}; //不一定所有浏览器都支持col参数 col = col || (window.event && window.event.errorCharacter) || 0; data.url = url; data.line = line; data.col = col; if (!!error && !!error.stack){ //如果浏览器有堆栈信息 //直接使用 data.msg = error.stack.toString(); }else if (!!arguments.callee){ //尝试通过callee拿堆栈信息 var ext = []; var f = arguments.callee.caller, c = 3; //这里只拿三层堆栈信息 while (f && (--c>0)) { ext.push(f.toString()); if (f === f.caller) { break;//如果有环 } f = f.caller; } ext = ext.join(","); data.msg = ext; } //把data上报到后台! },0); return true;//返回true是因为不需要在console中打印错误了 };
추천 학습: "Javascript Advanced Tutorial"
위 내용은 자바스크립트 구문 오류를 확인하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!