2010-12-01 3 views
17

나는 console.log이 대체는 document.ready()에서 정의한 : IE에서 스크립트 콘솔 (console.log)에 쓰는 올바른 방법은 무엇입니까?

$(document).ready(function(){ 
    console.log("doc ready"); 
    if(typeof console === "undefined"){ 
    console = { log: function() { } }; 
    } 
} 

내가 IE는 내가 출력이 파이어 폭스에 나타납니다

console.log("doc ready"); 

위의 호출을 포함 할 때, 사용할 수있는이 기능을 가지고 있지만 줄 알았는데 콘솔이지만 IE에서는 그렇지 않습니다. 사실이 시점에서 IE 스크립트 실행이 완전히 중단됩니다.

IE에서 콘솔에 쓰는 올바른 방법은 무엇입니까?

답변

0

콘솔은 방화범 용입니다.

IE에서 콘솔에 쓰기를 사용하려면 firebug lite을 설치해야합니다.

+0

콘솔에서도 작동합니다. – darioo

+1

틀린 점은 IE7 이하에서 콘솔 용 방화 광 라이트를 설치해야한다는 것입니다. IE8은 콘솔을 가지고 있지만 Firebug와 같은 로깅 방법이 강력하지는 않지만 거기에 있습니다. – epascarello

13

때문에 지침의 잘못된 순서의 스크립트 실행 바꿈이 더 좋을 수 있습니다

$(document).ready(function(){ 

    if(typeof console === "undefined"){ 
    console = { log: function() { } }; 
    } 
    console.log("doc ready"); 
} 

처음 액세스,이 결과를 존재하는 경우 확인 (그렇지 않은 경우를 만들기) 전에 콘솔을하면 오류로.

6

IE6/7에는 기본적으로 콘솔이 없습니다.

사실 Firefox는 Firebug라는 플러그인에 의해 제공됩니다. Firebug가 설치되지 않은 상태에서 Firefox 사본을 사용하는 경우 console을 IE와 똑같이 호출하려고하면 오류가 발생합니다.

IE8/9 do에는 콘솔이 있습니다.

Chrome 및 Safari에는 기본 제공 콘솔 개체가 있지만 Firebug 또는 IE8과 완전히 동일한 방식으로 작동하지 않습니다.

모든 브라우저에서 디버그 창이 열려 있지 않으면 콘솔 개체가 만들어지지 않을 수 있습니다. 즉, console.log 호출 코드는 브라우저에서만 실패 할 수 있습니다.

예를 들어, console.log()으로 전화를 걸면 콘솔이없는 브라우저를 막으려 고 의도적으로 존재하는 dummy console 개체가 본질적으로 만들어집니다. 그러나 코드가 실행되기 전에 console.log()으로 전화를 걸면 콘솔이없는 브라우저는 해당 행에서 충돌합니다. 따라서 console.log("doc ready"); 줄을 이동하여 console이 있는지 여부를 감지하는 비트 다음에 오게하십시오.

IE 용 콘솔을 원하면 Firebug Lite이라는 Firebug 버전이 있으며 모든 브라우저에서 실행할 수 있습니다. 이것을 실행하면 console 오브젝트가 작성됩니다.

그러나 페이지가로드 된 후에 만 ​​실행할 수 있으므로 문서 준비 기능에서 콘솔 메시지를 표시 할 수 없습니다. 또한 이미 존재하는 콘솔 객체를 만드는 데 실패 할 수 있으므로, 문서에 더미 콘솔 객체를 만들 준비가 된 코드가 Firebug Lite가 올바르게 작동하지 못하게 할 수 있습니다.

마지막으로 콘솔을 사용하는 것은 디버깅 용도로 환상적이지만 나중에 디버깅 용도로만 사용하려는 경우에도 console.log에 대한 호출로 실제 코드를 전달하지 않도록하십시오. 이미 보았 듯이 콘솔 객체가 없으면 브라우저에서 코드 실행을 중단 할 수 있으며 라이브 사용자에게는 문제가 발생하지 않도록주의해야합니다. : 코드를 전송하기 전에 항상 콘솔에 대한 모든 호출을 제거했는지 확인하는 것이 가장 좋습니다.

+1

IE가 플러그인/추가 js 코드없이 IE8 +에 콘솔을 가지고 있기 때문에 잘못되었습니다. – epascarello

+0

@epascarello - 원래 포스터에서는 실패했지만 충분합니다. (그는 그가 사용하고있는 IE의 버전을 지정하지 않았다). [더 구체적으로하기 위해 내 대답 편집] – Spudley

+0

console.log로 라이브 코드를 보내지 말라는 언급을위한 Upvote. –

2

사용할 수있는 콘솔이없는 경우 firebug lite로 장애 조치를 수행하는 방법은 다음과 같습니다. 이것들은 모두 다르게 작동하지만 약간의 설명이 담긴 콘솔을 보장하므로주의해야합니다.

function attachConsole(force) { 
    if(force || typeof console === "undefined"){ 
    var head= document.getElementsByTagName('head')[0]; 
    var script= document.createElement('script'); 
    script.type= 'text/javascript'; 
    script.src= 'http://getfirebug.com/releases/lite/1.2/firebug-lite-compressed.js'; 
    head.appendChild(script); 
    return true; 
    } 
return false; 
} 
관련 문제