2011-11-16 2 views
2

간단한 js 로깅을 구현하려고합니다. 아래의 코드를 테스트 한 결과 브라우저에 따라 다르게 동작합니다.window.onerror 함수가 다른 브라우저에서 다르게 처리되었습니다.

변경 사항이 true, false 또는 반환 값을 모두 변경하면 다른 효과가 나타납니다. 누구든지 이것을 피하는 방법을 알고 있습니까? 나는 오류를 잡아서 로그 할 수 있기를 원하지만, 나는 또한 브라우저 오류 처리를 유지하려고한다. 누군가가 클라이언트 측 JS 오류를 기록하는 더 나은 방법을 알고 또는 경우

window.onerror = function() { 
    alert('error caught!'); 
    // Basically here I fire a Google Analytics force event track call to log the error 

    return false; 
} 

...

크롬 - false를 반환은 - 콘솔

에 오류가 표시되지 않습니다 - false를 반환 - 콘솔 에 오류가 사파리 보여줍니다

** true로 돌아가려면 전환이 충분히 재미있어 정확한 결과를 얻을 수 있습니다. IE 등등에 대해 확실하지 않음

+0

'try ... catch'를 사용하여 간주됩니다. http://jsfiddle.net/Q5Nz7/? – Niklas

+0

다른 브라우저에서 결과를 요약 해 주시겠습니까? 게시 한 것은 표준이므로 유사하게 작동해야합니다. –

+0

위의 몇 가지 테스트 사례를 추가했습니다. – jhanifen

답변

1

IE에서 오류의 줄 번호를 원한다면, IE가 try...catch 블록에서 예외를 throw 할 때 회선을 포함하지 않기 때문에 유일한 옵션은 window.onerror입니다. 번호. 즉, 모든 브라우저에는 try...catch 블록에 예외가 구현되어 있습니다. 일부 브라우저에서는 window.onerror에서 가져올 수없는 전체 스택 추적을 제공합니다. 당신이 발견 한 특이한 변종에 대해서는 몰랐 습니다만, 예외 처리는 모든 브라우저에서 가장 일관성있게 구현되지 않은 것에 관한 것이며, 각 브라우저 내에서 동일하게 유지되지는 않습니다. 내가 기억한다면 Opera는 Opera 10에서 예외 클래스를 변경하고 Opera에서 예외를 구문 분석하기 위해 작성한 것을 깨뜨 렸습니다.

자바 스크립트에서 예외 처리를 발견했다면 브라우저 감지 및 브랜칭 만 수행하면 각 브라우저에서 올바른 작업을 수행 할 수 있습니다. JavaScript에서 예외를 처리하고 브라우저의 차이점을 추상화하는 좋은 라이브러리를 찾고 있었지만 지금까지는 찾지 못했습니다.

+1

동일한 것을 찾았습니다. 아마도이 프로젝트를 시작해야 할 것입니다. – jhanifen

관련 문제