2

나는 Firefox Addon 버전의 userscript를 만들고 있습니다. 애드온 구문은 page-mod 라이브러리를 사용하면 정말 간단합니다. 예를 들어 :pagemod를 사용하여 firefox addon contentscript에서 사이트를 제외하는 방법은 무엇입니까?

var data = require("self").data; 
var pageMod = require("page-mod"); 
pageMod.PageMod({ 
    include: "*.example.com", 
    contentScriptWhen: 'end', 
    contentScriptFile: data.url("test.user.js") 
}); 

*.example.com 일치하는 사이트에 대한 스크립트 test.user.js를 실행합니다. 그러나 일반적인 userscript에서 제외 라인을 지정할 수도 있습니다. 따라서 포함 된 url의 하위 디렉토리를 쉽게 우회 할 수 있습니다.

exclude: "*.example.com/somewhere", 

그러나 pagemod 워드 프로세서 (존재하는 것처럼 보인다도) 이러한 옵션을 나열하지 않습니다 IOW, 나는이 같은 라인을합니다. 이 경우 제외를 어떻게 지정합니까?

include와 같이 정규 표현식에서 빌드 된 match-pattern을 사용할 수도 있습니다. 그러나 정규식이 * .example.com과 일치하지만 * .example.com/subdir (* .example.com/othersubdirs)과 일치하지 않는다고 생각하고 있습니다.

답변

2

include 옵션에서 정규식을 사용하여 제외 규칙을 항상 수행 할 수있는 것은 아니며 가능한 경우 그러한 경우에 복잡하게 나타날 수 있습니다.

아마 가장 간단하고 가장 강력한 방법은 제외 항목을 contentScriptFile에 추가하는 것입니다. (테스트되지 않은)이 같은

뭔가 : 당신은 정규 표현식에 부정적인보기 미리 사용할 수 있습니다

if (/^https?.*badSite\.net.*$/.test (location.href)) 
    return; 
+0

간단한 해결 방법, 그렇게 할 것입니다. 고마워. – mix

+0

안녕하세요. 기꺼이 도와주세요. –

3

이를 달성하기 :

include: /^https?:\/\/([^\/]+\.)?example.com\/(?!somewhere).*/ 

이 정규 표현식은 http://example.com/, https://example.com/, http://foo.example.com/와 일치 http://example.com/subdir은 아니지만 http://example.com/somewhere 또는 http://fooexample.com/이 아닙니다.