콘솔이 존재하지 않을 때 콘솔에 액세스하지 못하게하면서 가능한 한 짧게 로깅 문을 유지하려고했습니다. 나는 다음과 같은 해결책을했다 : 나에게다른 개체에 console.log 할당 (웹킷 문제)
var _ = {};
if (console) {
_.log = console.debug;
} else {
_.log = function() { }
}
, 이것은 매우 우아한 것, 그리고 그것은 (console.debug
더 유용 console.log
이상 할 줄 번호를 유지 포함) 파이어 폭스 3.6에서 잘 작동합니다. 하지만 Safari 4에서는 작동하지 않습니다. [업데이트 : 또는 Chrome에서. 그래서 문제는 방화범이 끌려와 웹킷 콘솔의 차이 것으로 보인다] 나는
console.debug('A')
_.log('B');
과 위의를 수행하면 첫 번째 문은 두 브라우저에서 잘 작동하지만 두 번째는 생성합니다. "형식 오류 : 입력 오류"의를 원정 여행. Firebug와 Safari 웹 개발자 도구가 콘솔을 구현하는 방법과 다른 점이 있습니까? 그렇다면
Apple의
Webkit 부분에 매우 귀찮습니다. 콘솔 함수를 프로토 타입에 바인딩 한 다음 인스턴스에 직접 바인딩하지 않고 인스턴스화하면 도움이되지 않습니다.
물론 console.debug
을 _.log
에 할당 된 익명 함수에서 호출 할 수는 있지만 내 줄 번호는 잃어 버릴 수 있습니다. 다른 아이디어?
그것은 웹킷의 특징이다,하지 버그 ;-) https://bugs.webkit.org/show_bug.cgi?id=20141 –
관련 : http://stackoverflow.com/questions/14146316/why-does-scope-reduction-in-safari-break-existing-code – MvG