쉬운 방법이 있습니다. 그리고 어떻게 달렸는지의 차이 때문에 바꿀 필요가있는 것이 있습니까?Bookmarklet을 Greasemonkey userscript로 변환하는 방법은 무엇입니까?
답변
이 작업을 수행하는 가장 쉬운 방법 :
는 URL decoder을 통해 북마크 코드를 실행합니다. 그래서
javascript:alert%20('Hi%20Boss!')%3B
는, 예를 들어,이된다 :
javascript:alert ('Hi Boss!');
지구 선두
javascript:
오프. 결과 :alert ('Hi Boss!');
Greasemonkey 파일의 끝에이 코드를 추가하십시오. 예를 들어,이 코드라는 파일,
안녕하세요 World.user.js을 만듭니다// ==UserScript== // @name Hello World! // @description My first GM script from a bookmarklet // @include https://stackoverflow.com/questions/* // @grant none // ==/UserScript== alert ('Hi Boss!');
열기 안녕하세요 World.user.js 파이어 폭스와 (Ctrl 키을 O). Greasemonkey가 스크립트를 설치하라는 메시지를 표시합니다.
북마크릿 코드는
@include
및@exclude
지시어로 지정한 페이지에서 자동으로 실행됩니다.업데이트 :는 그리스 몽키와 Tampermonkey의 이후 버전에서 추가 된
@grant none
지시어를 사용, 최대의 호환성을 보장합니다. 중요
:
userscript 훨씬 빨리 책갈피를 활성화 그 어느 것보다 실행됩니다. 일반적으로 이는 문제가되지 않습니다.
그러나 어떤 경우에는 페이지의 일부분이 완전히로드 될 때까지 기다려야 할 수도 있습니다.
이 경우 use techniques/utilities like waitForKeyElements 수 있습니다.참조 : Choosing and activating the right controls on an AJAX-driven site.
여전히 새 스크립트가 작동하지 않으면 My very simple Greasemonkey script is not running?을 읽어야합니다. 다음 단계를 수행하고 에 새 스크립트의 문제점에 대해 열어 둔 질문에이라는 지정된 정보를 포함 시키십시오.
여기 avoid common pitfalls 있기 때문에 "정상"JS와 그리스 몽키의 차이는 매우 좋은 문서이다.처음에
가장 중요한 것들 :
- 처럼, 문자열로 기능을 사용하지 마십시오
window.setTimeout(function(){doSomething(); doSomethingOther();}, 1000);
는 - 설정하지 마십시오
아니라window.setTimeout("my_func()", 1000);
window.setTimeout(my_func, 1000);
또는아니라element.onclick
element.addEventListener("click", my_func, true);
일반적으로 다양한 DOM을 반환하는 일부 코드 개체는 Greasemonkey 환경에서 XPCNativeWrapper로 래핑 된 개체를 반환합니다. 보안상의 이유로
일부 메서드 및 속성은 "투명"이며 래핑 된 개체에서 호출 할 수 있지만 일부에서는 호출 할 수 없습니다. 이것을 피하는 방법에 대해 언급 된 기사를 읽으십시오. 당신은 또한 사용할 수 있습니다 (이것은 일반적으로 권장되지 않지만 테스트 등) wrappedJSObject 속성입니다. Greasemonkey에서
obj.something
/obj.something()
이 작동하지 않으면obj.wrappedJSObject.something
/obj.wrappedJSObject.something()
을 시도하십시오.
이것은 훌륭하지만 모든 페이지에서 자동으로 실행됩니다. 내 모든 북마크 렛은 가끔 활성화해야하는 것입니다 (예 : Pinboard에서 북마크를 지정하거나 Wayback Machine에서 찾아보기). 내가 그것을 원할 때 어떻게 당신은 단지 그것을 실행하게 만들었습니까? –
@NickS, [@ include, @ exclude 및 @ match 명령] (https://tampermonkey.net/documentation.php#_include)은 다음과 같습니다. –
죄송합니다. 분명히 말씀 드리겠습니다. 저는 "Wayback Machine에서 이것을 보길 원합니다"라고 생각하고 * something *을 클릭 한 다음 스크립트를 실행합니다 (Wayback을 사용하여 새 탭을 엽니 다. 현재 URL에 대한 기계 검색). 클릭하면 무엇이 있습니까? 스크립트는 탭을 열 때 어떻게 알 수 있습니까? –