onerror=handleErr function handleErr(msg,url,l) { var txt=""; txt="There was an error on this page.\n\n" txt+="Error: " + msg + "\n" txt+="URL: " + url + "\n" txt+="Line: " + l + "\n\n" omsg = $("errmsg"); if(typeof(omsg) == "object") { omsg = document.createElement("div"); document.body.insertBefore(omsg,document.body.childNodes[0]); omsg.id = "errmsg"; try{ omsg.setStyle({"padding":"5px","background":"#fff","border":"1px solid #9D9D9D"}); }catch(e){ omsg.style.padding = "5px"; omsg.style.background = "#fff"; omsg.style.border = "1px solid #9D9D9D"; omsg.style.textAlign = "left"; } } omsg.innerHTML = nl2br(txt); return true; }참고 @http://jakartaproject.com/article/javascripttip/124201471701610
BY kaiser
onerror 이벤트
예외를 처리하는 다른 방법 중에 하나인 onerror 이벤트를 살펴보겠다.
onerror 이벤트는 페이지에 스크립트 에러가 발생할 때 마다 호출 된다.
onerror 이벤트를 사용하기 위해서는, 반드시 에러를 다룰 함수를 만들어야한다. 그런 뒤 onerror 이벤트 핸들러로 해당 함수를 호출하면 된다. 이 때 불려지는 함수는 세 개의 인자를 가지게 된다. msg(에러 메시지), url(에러를 발생시킨 페이지의 url) 그리고 line(몇 번째 행에서 에러가 발생했는지)
문법
onerror=handleErr function handleErr(msg,url,l) { //Handle the error here return true or false }
onerror 에 의해 반환되는 값으로 브라우저에 표준 에러 메시지를 출력할지 말지 결정할 수 있다. 만약에 false를 반환하면 브라우저는 자바스크립트 콘솔에 표준 에러 메시지를 출력합니다. 하지만 만약 true를 반환한다면 브라우저는 표준 에러 메시지를 출력하지 않습니다.
예제
<html> <head> <script type="text/javascript"> onerror=handleErr var txt="" function handleErr(msg,url,l) { txt="There was an error on this page.\n\n" txt+="Error: " + msg + "\n" txt+="URL: " + url + "\n" txt+="Line: " + l + "\n\n" txt+="Click OK to continue.\n\n" alert(txt) return true } ddd function message() { adddlert("Welcome guest!") // 에러... } </script> </head> <body> <input type="button" value="View message" onclick="message()" /> </body> </html>
에러가 발생하면 onerror 이벤트가 발생하고 거기에 정해준 콜백 메소드가 실행됩니다. 이 때 메시지를 직접 작성한 뒤 표준 에러 메시지를 출력하지 않고 handleErr() 함수에서 작성한 메시지를 보여줍니다.
에러 보고로 사용자를 괴롭히지 않기
window.onerror = function(){ return true; }
'Javascript' 카테고리의 다른 글
typeof 정확한 판별 (0) | 2009.11.26 |
---|---|
DOM 프로퍼티 (0) | 2009.11.04 |
수학관련 함수 (0) | 2009.01.08 |
fieldset 그룹박스 (0) | 2008.12.26 |
전화번호,휴대전화 검사 / 자동"-"넣기 (0) | 2008.12.15 |