1

우리는 Firefox 용 확장 기능을 개발합니다. 스크립트는 콘텐츠 스크립트인지 백그라운드 스크립트인지를 알아야합니다 (때로는 동일한 스크립트가 내용 스크립트와 배경 스크립트가 될 수 있음). 우리는 다음과 같은 코드로하려고 노력 :Firefox 확장 프로그램 - 콘텐츠 스크립트인지 어떻게 확인합니까?

if (typeof exports === 'undefined') { 
    // we're in a content script. 
} else { 
    // we're in a background script. 
} 

그러나 문제는 typeof exports 일부 콘텐츠 스크립트 'undefined'되지 않는 것입니다. 우리가 콘텐츠 스크립트에있을 때를 알 수있는 더 좋은 방법이 있습니까?

편집 : 내가 실수를 가지고 있으며, 실제로 typeof exports 콘텐츠 스크립트 'undefined'입니다. 따라서 typeof exports을 확인하는 것이 콘텐츠 스크립트를 식별하는 신뢰할 수있는 방법입니다.

답변

2

내 마음에 떠오른 첫 번째 사실은 콘텐츠 스크립트로 확장을위한 별도의 파일을 포함합니다.이 파일에는 전역 변수가 있습니다. 예 : 파일 content_script_definition.js : 다음

isContentScript = true; 

그리고 다음 코드를 사용합니다

+0

나는 이것이 훌륭한 방법이라고 생각합니다. 알려진 콘텐츠를 찾을 수 있습니다. sc '자체'/ 'addon'과 같은 ript globals는 유효한 이유 때문에 다른 js 범위의 전역 변수로 정의 될 수 있습니다. 이 기술을 사용하면 컨텐츠 스크립트에서 실행되는 것을 감지하는 방법에 대해 명시 적으로 설명하고 있습니다. – canuckistani

1

... 또 다른 방법을

if (typeof isContentScript !== 'undefined' && isContentScript) { 
    // we're in a content script. 
} else { 
    // we're in a background script. 
} 

어쩌면 이것에 대해 확실하지 않은 일부 문서화 기능이를

if(String(this).indexOf("Sandbox") >= 0){ 
    //main.js 
} 
else{ 
    //content script 
}