2013-06-18 3 views
10

이것은 약간 이상한 질문입니다.여러 도메인에 Greasemonkey 스크립트 포함

10 개의 도메인에서 실행되는 Greasemonkey 스크립트를 작성하고 있습니다. 웹 사이트는 모두 구조가 동일하지만 각 웹 사이트의 도메인 이름이 다릅니다. 예를 들어, 스크립트에 실행됩니다 :

http://first-domain.com/ 
http://another-one.com/ 
http://you-get-the-point.com/ 

나는 또한 같은 도메인에서 다른 페이지에 실행해야하므로 이러한 도메인의 하나의 목록을 볼 수있는 작품 같은 :

http://first-domain.com/admin/edit/* 
http://first-domain.com/blog/* 
http://first-domain.com/user/*/history 

분명히 내가 10 개 도메인 모두에 대해이 세 경로를 포함한다면, 그 URL은 @include으로 지정해야합니다. 같은 것을 할 수있는 방법이 있는지

그래서 궁금하네요 :

// Obviously fake code: 

var list_of_sites = ["first-domain", "another-one", "you-get-the-point"]; 

@include http:// + list_of_sites[any] + .com/admin/edit/* 
@include http:// + list_of_sites[any] + .com/blog/* 
@include http:// + list_of_sites[any] + .com/user/*/history 

같은 것을 할 수 있다면, 그래서 3.이

아래로 (30)로부터 @include의 목록을 잘라 것 이게 가능한가, 아니면 내가 꿈꿔?

P. 내가 단지 @include http://first-domain.com/* 일 수 있고 if 문을 사용하여 해당 도메인 내의 특정 경로에서 스크립트의 특정 부분을 실행하지만 스크립트가 실행될 페이지의 수는 사이트의 약 2 %에 불과하므로 각 웹 사이트의 모든 페이지에 스크립트를 포함하는 것은 낭비입니다.

답변

15

참조 :

(파이어 폭스) 그리스 몽키 작동 용액, 크롬 온 Tampermonkey 다를 수있다.

세 가지 기본적인 접근 방법 :

  1. 사용 30 개 @include 라인 :이 잘라 내기 및 붙여 넣기 코딩의 관점에서 입에 맞지 수 있지만, 그것은 같은에서 브라우저를 작동 할 한 가지 방법입니다 최고의 브라우저 성능을 제공 할 것입니다. 다른 접근법은 브라우저가 방문한 모든 페이지 또는 iframe에 대해 (더) 검사를 수행하도록 요구합니다.

  2. 정규식 @include을 사용

    @include /^http:\/\/(1stDomain\.com|2ndDomain\.com|3rdDomain\.net|etc.)\/(admin\/edit|blog|user\/.+?\/history)/ 
    

    이 한 줄, 그리고 상당히 잘 수행하지만 라인이 다루기 얻을 수 있으며,이 는 그리스 몽키와 Tampermonkey에서 작동합니다 (그리고 아마도 Scriptish).@match, @include@exclude

  3. 를 사용하여 다양한 조합이 : 난 단지 가능성으로 이것을 언급. 그것은 직선 크롬에 대해 가장 잘 수행되는 접근 방식이지만, 이런 종류의 브라우저를위한 크로스 브라우저는 아닙니다. Greasemonkey 또는 Tampermonkey의 경우 접근 방식 1 또는 접근 방식 2를 사용하십시오.

가능한 한 많은 와일드 카드를 사용하지 않는 것이 좋습니다. 브라우저가 가장 느려집니다. 예를 들어 피해야 할 경우 @include /^.+ .../ 또는 @include http:/*/*과 같은 것을 사용하지 마십시오.

+1

아름답습니다. 환상적입니다! 접근 방식 # 2는 내 상황에 가장 적합하고 지금은 완벽하게 작동하고 있습니다. Greasemonkey와 Tampermonkey 만 타겟팅하는 개인용 스크립트 용이므로 호환성이 좋습니다. 당신은 전설입니다! – blimpage

+0

당신을 환영합니다; 기꺼이 도와주세요. –

관련 문제