수색…
통사론
- window.onerror = function (eventOrMessage, url, lineNumber, colNumber, error) {...}
매개 변수
| 매개 변수 | 세부 | 
|---|---|
| eventOrMessage | 일부 브라우저에서는 하나의 인수 인 Event객체 만 사용하여 이벤트 핸들러를 호출합니다. 그러나 다른 브라우저, 특히 오래된 브라우저와 오래된 모바일 브라우저는 첫 번째 인수로String메시지를 제공합니다. | 
| url | 두 개 이상의 인수를 사용하여 핸들러를 호출하면 일반적으로 두 번째 인수는 문제의 원인이되는 JavaScript 파일의 URL입니다. | 
| lineNumber | 둘 이상의 인수를 사용하여 핸들러를 호출하면 세 번째 인수는 JavaScript 소스 파일의 행 번호입니다. | 
| colNumber | 둘 이상의 인수를 사용하여 핸들러를 호출하면 네 번째 인수는 JavaScript 소스 파일의 열 번호입니다. | 
| 오류 | 둘 이상의 인수를 사용하여 핸들러를 호출하면 다섯 번째 인수는 때때로 문제를 설명하는 Error객체입니다. | 
비고
 불행히도, window.onerror 는 역사적으로 각 벤더에 의해 다르게 구현되었습니다. 매개 변수 섹션에 제공된 정보는 서로 다른 브라우저 및 해당 버전에서 예상되는 내용을 대략적으로 보여줍니다. 
window.onerror를 처리하여 모든 오류를 서버 측에보고합니다.
 다음 예제에서는 window.onerror 이벤트를 수신하고 이미지 비콘 기법을 사용하여 URL의 GET 매개 변수를 통해 정보를 보냅니다. 
var hasLoggedOnce = false;
// Some browsers (at least Firefox) don't report line and column numbers
// when event is handled through window.addEventListener('error', fn). That's why
// a more reliable approach is to set an event listener via direct assignment.
window.onerror = function (eventOrMessage, url, lineNumber, colNumber, error) {
    if (hasLoggedOnce || !eventOrMessage) {
        // It does not make sense to report an error if:
        // 1. another one has already been reported -- the page has an invalid state and may produce way too many errors.
        // 2. the provided information does not make sense (!eventOrMessage -- the browser didn't supply information for some reason.)
        return;
    }
    hasLoggedOnce = true;
    if (typeof eventOrMessage !== 'string') {
        error = eventOrMessage.error;
        url = eventOrMessage.filename || eventOrMessage.fileName;
        lineNumber = eventOrMessage.lineno || eventOrMessage.lineNumber;
        colNumber = eventOrMessage.colno || eventOrMessage.columnNumber;
        eventOrMessage = eventOrMessage.message || eventOrMessage.name || error.message || error.name;
    }
    if (error && error.stack) {
        eventOrMessage = [eventOrMessage, '; Stack: ', error.stack, '.'].join('');
    }
    var jsFile = (/[^/]+\.js/i.exec(url || '') || [])[0] || 'inlineScriptOrDynamicEvalCode',
        stack = [eventOrMessage, ' Occurred in ', jsFile, ':', lineNumber || '?', ':', colNumber || '?'].join('');
    // shortening the message a bit so that it is more likely to fit into browser's URL length limit (which is 2,083 in some browsers)
    stack = stack.replace(/https?\:\/\/[^/]+/gi, '');
    // calling the server-side handler which should probably register the error in a database or a log file
    new Image().src = '/exampleErrorReporting?stack=' + encodeURIComponent(stack);
    
    // window.DEBUG_ENVIRONMENT a configurable property that may be set to true somewhere else for debugging and testing purposes.
    if (window.DEBUG_ENVIRONMENT) {
        alert('Client-side script failed: ' + stack);
    }
}
Modified text is an extract of the original Stack Overflow Documentation
        아래 라이선스 CC BY-SA 3.0
        와 제휴하지 않음 Stack Overflow