2014-04-25 3 views
2

이 코드를 브라우저에서 실행하는지 브라우저에서 실행하지 않는지 확인하는 방법은 무엇입니까? 나는이브라우저에서 JavaScript 코드를 실행하는지 브라우저에서 실행하지 않는지 확인하는 방법은 무엇입니까?

var x = 5; 
if(/*inside a browser*/) document.write(x); 
else/*without a browser*/ console.log(x); 
+2

'브라우저 내부'란 정확히 무엇을 의미합니까? – pennstatephil

+0

다른 곳에서 실행 하시겠습니까? – durbnpoisn

+0

Netbeans의 콘솔 또는 Chrome, Firefox 및 IE와 같은 브라우저 – Pavel

답변

1
if (typeof(window) != 'undefined') { 
    //i am inside of browser environment 
} else { 
    //i am elsewhere (server?) 
} 
+0

'window'가 선언되지 않으면 * ReferenceError *를 던집니다. 대신에 if (this.window) {'를 할 수 있습니다. –

+0

@cookiemonster가 수정되었습니다. –

0
<script type="text/javascript"> 
    document.write("Welcome, you have Javascript on.") 
</script> 

<noscript>JavaScript is off. Please enable to view full site.</noscript> 
+2

나는 그것이 OP가 요구하는 것이라고 생각하지 않는다. –

+2

이것이 의도인지 확실하지 않습니다. JavaScript는 호스팅 된 스크립팅 환경, Rhino 런타임, Node.js 등과 같은 비 브라우저 환경에서 실행할 수 있습니다. 하위 수준 라이브러리는 위치를 확인해야 할 수 있습니다. – Katana314

1

처럼 뭔가를 여기에 브라우저 대 노드를 검출하는 방법이다 :

var inside_browser = (typeof module === 'undefined'); 

당신이 모듈을 정의하지 않으면 그것은 작동합니다.

0

편집 :

아래에 언급 된 것보다 간단한 해결책은 단지 호출 (this.window).

다른 답변은 브라우저에서 대 서버 (예를 Node.js를)에 대한 측면 JS를 요구하고 가정 하였다. 그러나, 나의 초기 아이디어는 javascript 콘솔에서 뭔가가 실행되었는지 감지하는 방법에 대해 묻는 것이 었습니다.

(function(){ 

    var _z = console; 
    Object.defineProperty(window, "console", { 
    get : function(){ 
     if(_z._commandLineAPI){ 
     return true; 
      } 
     return false; 
    }, 
    set : function(val){ 
     _z = val; 
    } 
    }); 

})(); 

KSpace blog에서 목적으로 수정 된 항목 : 여기에 내 방법이 될 것입니다.

관련 문제