[jquery] Greasemonkey에서 jQuery를 어떻게 사용합니까?

이 줄을 넣으려고했지만 작동하지 않습니다.

// @require       http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.js

jQuery는 Greasemonkey에서 전혀 작동하지 않습니다. Greasemonkey에서 jQuery를 사용하는 다른 방법이 있습니까?

동일한 문제가있는 모든 사람들을 위해, 파일을 greasespot에 업로드 한 다음 거기에서 설치해야합니다.

새 스크립트 작성 옵션이 작동하지 않습니다!



답변

아마도 Greasemonkey의 최신 버전이 없을 것입니다. 추가 된 버전은 0.8입니다 @require.

// @require https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js 

0.8이없는 경우 Joan Piedra 가 페이지에 요소를 수동으로 추가하기script 위해 설명하는 기술을 사용 하십시오 .

버전 0.8과 0.9 사이 @require입니다 스크립트를 처음 설치할 경우에만 처리됩니다. 필요한 스크립트 목록을 변경하면 스크립트를 제거했다가 다시 설치해야합니다. Greasemonkey는 설치시 필요한 스크립트를 한 번 다운로드 한 후 캐시 된 사본을 사용합니다.

0.9부터 Greasemonkey 동작이 변경되어 ( 접선 관련 문제를 해결하기 위해 ) 편집 할 때마다 필요한 스크립트를로드합니다. 더 이상 스크립트를 다시 설치할 필요가 없습니다.


답변

jQuery가 이미 포함되어있는 사이트에서 jQuery를 사용하려면 다음과 같이하십시오 (BrunoLM에서 영감을 얻음).

var $ = unsafeWindow.jQuery;

나는 이것이 원래의 의도가 아니라는 것을 알고 있지만 점점 더 일반적인 경우가되고 있으며,이 경우를 명시 적으로 배제하지 않았다. 😉


답변

Greasemonkey 스크립트 내에 jQuery 전체를 포함시키는 데 아무런 문제가 없습니다. 소스를 가져 와서 사용자 스크립트의 맨 위에 놓으십시오. 이미 JavaScript를 실행하고 있으므로 스크립트 태그를 만들 필요가 없습니다!

어쨌든 사용자는 한 번만 스크립트를 다운로드하므로 스크립트 크기는 큰 문제가되지 않습니다. 또한 Greasemonkey 스크립트가 GM 이외의 환경 (예 : Opera의 GM-esque 사용자 스크립트 또는 Safari의 Greasekit)에서 작동하게하려면 @require와 같은 GM 고유의 구문을 사용하지 않는 것이 좋습니다.


답변

Rob의 솔루션은 @requirejQuery 라이브러리와 함께 사용하는 것이 올바른 방법입니다. 지시문이 처리되도록 스크립트를 다시 설치하십시오.

내가 추가 할 가치가 있다고 생각하는 한 가지는 AJAX 메소드를 제외하고 jQuery를 스크립트에 포함하면 정상적으로 사용할 수 있다는 것 입니다. 기본적으로 jQuery는 Greasemonkey 컨텍스트에 존재하지 않는 XMLHttpRequest를 찾습니다. GM_xmlhttpRequest (Greasemonkey 버전 XHR)의 래퍼를 만들고 jQuery 를 사용하여 래핑 된 버전을 기본값으로 지정 하는 해결 방법 에 대해 썼습니다 ajaxSetup(). 이렇게하면, 당신은 사용할 수 있습니다 $.get$.post평소와 같이.

jQuery가 태그를 $.getJSON사용하여 JSONP를로드하기 때문에 문제가있을 수도 있습니다 <script>. jQuery가 Greasemonkey 창의 범위에서 콜백 함수를 정의하고로드 된 스크립트가 기본 창의 범위에서 콜백을 찾기 때문에 오류가 발생합니다. 가장 좋은 방법은 $.get대신 사용 하고 결과를로 구문 분석하는 것입니다 JSON.parse().


답변

Greasemonkey의 새 사용자 스크립트를 사용하여 새 스크립트를 만들 수 있지만 gm_scripts 폴더에서 config.xml 파일을 편집해야합니다.

귀하 의 Config.xml 파일은 다음과 유사한 구문이 있어야합니다 :

<Script filename="jquery_test.user.js" name="jQuery Test" namespace="http://www.example.com/jQueryPlay/" description="Just a test" enabled="true" basedir="jquery_test">
        <Include>http://*</Include>
        <Require filename="jquery.js"/>
</Script>

주목 <Require> 태그를.

스크립트에서 직접 jQuery 구문을 사용할 수 있습니다. Greasemonkey 헤더에 require 태그가 있는지 확인하십시오. 다음은 Hello World 예제입니다.

// ==UserScript==
// @name           Test jQuery
// @namespace      http://www.example.com/jQueryPlay/
// @description    Just a test
// @include        http://*
// @require       http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.js
// ==/UserScript==

$(document).ready(function() {
        alert("Hello world!");
});

config.xml 을 수정 한 후 Greasemonkey가 설정을 다시로드하려면 브라우저를 다시 시작해야합니다.

또한 이것이 작동하려면 jquery.js 파일을 스크립트 디렉토리 폴더에 복사해야합니다. 나는 이것을 테스트했으며 실제로 파일을 수동으로 복사하는 경우에만 작동합니다.

행복한 jQuerying!


답변

업데이트 : 아래 의견에서 알 수 있듯이이 답변은 더 이상 사용되지 않습니다.

다른 사람들이 말했듯이 @require는 스크립트가 설치되었을 때만 실행됩니다. 그러나 현재 jQuery 1.4. *는 greasemonkey와 함께 작동하지 않습니다. 자세한 내용은 여기를 참조하십시오 :
http://forum.jquery.com/topic/importing-jquery-1-4-1-into-greasemonkey-scripts-generates-an-error

상황이 바뀔 때까지 jQuery 1.3.2를 사용해야합니다.


답변

크롬을 사용하는 경우 Chromium에서 지원하지 않는 대안을 선택해야합니다 @require.

출처 : Chromium 프로젝트-사용자 스크립트

Chrome의 Greasemonkey 스크립트에서 jQuery를 사용하는 방법 에 대한 자세한 내용 및 대안은 무엇입니까?