2014-12-15 2 views
2

내 Greasemonkey/UserScript에 대한 업데이트가있을 때 사용자에게 알리고 싶습니다. 그러나 사용자가 Chrome 웹 스토어에서 스크립트를 설치하면 자동 업데이트 기능이 있기 때문에 걱정하지 않으려 고합니다.Chrome Store에서 userscript가 설치되어 있는지 확인하는 방법은 무엇인가요?

나는 처음으로 $.browser==chrome을 사용하는 것에 대해 생각했지만 Chrome 사용자가 Tampermonkey를 사용하여 설치 한 것일 수도 있습니다. (또한 jQuery를 업데이트하면 $.browser이 작동을 멈 춥니 다.)

그렇다면 Chrome 웹 스토어를 통해 설치된 UserScript인지 검색 할 수 있습니까?

답변

3

아마도 사용자에게 업데이트가 가능하다는 것을 알리고 플랫폼에 대해 걱정하지 않는 것이 좋습니다. 또한이 스크립트가 어떻게 교차 브라우저인지 명확하지 않습니다. 절대적으로 확신하기 위해 브라우저 스니핑 (보통 권장하지 않음)에 의존해야 할 수도 있습니다.

// ==UserScript== 
// @name  _Rough script handler detector 
// @include http://YOUR_SERVER.COM/YOUR_PATH/* 
// ==/UserScript== 
var scriptEngine; 

if (typeof GM_info === "undefined") { 
    scriptEngine = "plain Chrome (Or Opera, or scriptish, or Safari, or rarer)"; 
    // See https://stackoverflow.com/a/2401861/331508 for optional browser sniffing code. 
} 
else { 
    scriptEngine = GM_info.scriptHandler || "Greasemonkey"; 
} 
console.log ('This userscript is running on ' + scriptEngine + '.'); 

산출 :
Tampermonkey을 : 당신은 크롬 및/또는 파이어 폭스에 대한에만 관심이 있다면


당신은 the scriptHandler property of the GM_info object을 사용할 수 있습니다이 userscript가 실행되고

Tampermonkey에.

그리스 몽키 (엄밀히 파이어 폭스) :

이 userscript는 그리스 몽키에서 실행되고 있습니다.

크롬, 또는 다른 웹 스토어에서 :

이 userscript 일반 크롬 (또는 오페라, 또는 scriptish, 또는 Safari, 또는 희소)에서 실행되고 있습니다. 단지 큰 엔진 (그리스 몽키와 Tampermonkey가) 현재 GM_info를 지원하기 때문에 사용자의 userscript 특히 크로스 브라우저의 경우

, 당신은 드문 경우 차별화하는 스니핑 브라우저를 수행해야합니다.
See this answer for browser-sniffing code that doesn't require jQuery.


참고하십시오 @grant 지시어는 GM_info를 사용하는 것이 필요하지 않습니다.

관련 문제