답변

5

이 작업을 수행하는 가장 쉬운 방법 :

  1. URL decoder을 통해 북마크 코드를 실행합니다. 그래서 javascript:alert%20('Hi%20Boss!')%3B는, 예를 들어,이된다 :
    javascript:alert ('Hi Boss!');

  2. 지구 선두 javascript: 오프. 결과 : alert ('Hi Boss!');

  3. 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!'); 
    
  4. 열기 안녕하세요 World.user.js 파이어 폭스와 (Ctrl 키O). Greasemonkey가 스크립트를 설치하라는 메시지를 표시합니다.

  5. 북마크릿 코드는 @include@exclude 지시어로 지정한 페이지에서 자동으로 실행됩니다.

  6. 업데이트 :는 그리스 몽키와 Tampermonkey의 이후 버전에서 추가 된 @grant none 지시어를 사용, 최대의 호환성을 보장합니다. 중요


:

+0

이것은 훌륭하지만 모든 페이지에서 자동으로 실행됩니다. 내 모든 북마크 렛은 가끔 활성화해야하는 것입니다 (예 : Pinboard에서 북마크를 지정하거나 Wayback Machine에서 찾아보기). 내가 그것을 원할 때 어떻게 당신은 단지 그것을 실행하게 만들었습니까? –

+0

@NickS, [@ include, @ exclude 및 @ match 명령] (https://tampermonkey.net/documentation.php#_include)은 다음과 같습니다. –

+0

죄송합니다. 분명히 말씀 드리겠습니다. 저는 "Wayback Machine에서 이것을 보길 원합니다"라고 생각하고 * something *을 클릭 한 다음 스크립트를 실행합니다 (Wayback을 사용하여 새 탭을 엽니 다. 현재 URL에 대한 기계 검색). 클릭하면 무엇이 있습니까? 스크립트는 탭을 열 때 어떻게 알 수 있습니까? –

1

여기 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()을 시도하십시오.