243

この行を入れてみましたが、機能しません。

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

jQueryはGreasemonkeyではまったく機能しません。GreasemonkeyでjQueryを使用する他の方法はありますか?

-

同じ問題を抱えているすべての人のために、あなたはファイルをグリーススポットにアップロードし、そこからそれをインストールしなければなりません。

[新しいスクリプトの作成]オプションは機能しません。

4

10 に答える 10

201

おそらく、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は、インストール時に必要なスクリプトを1回ダウンロードし、その後はキャッシュされたコピーを使用します。

0.9以降、Greasemonkeyの動作が変更され(接線方向に関連する問題に対処するため)、編集のたびに必要なスクリプトが読み込まれるようになりました。スクリプトを再インストールする必要はなくなりました。

于 2009-05-13T16:50:52.977 に答える
89

すでに含まれているサイトでjQueryを使用したい場合は、次の方法があります(BrunoLMに触発されています)。

var $ = unsafeWindow.jQuery;

これが質問の本来の意図ではなかったことは知っていますが、ますます一般的なケースになりつつあり、このケースを明示的に除外していません。;)

于 2010-11-23T22:51:14.240 に答える
21

GreasemonkeyスクリプトにjQuery全体を含めることには何の問題もありません。ソースを取得して、ユーザースクリプトの先頭に配置するだけです。すでにJavaScriptを実行しているので、スクリプトタグを作成する必要はありません。

ユーザーはとにかくスクリプトを一度だけダウンロードするので、スクリプトのサイズは大きな問題ではありません。さらに、Greasemonkeyスクリプトを非GM環境(OperaのGM風のユーザースクリプトやSafariのGreasekitなど)で機能させたい場合は、@requireなどのGM固有の構造を使用しないと役立ちます。

于 2009-05-13T17:04:14.920 に答える
7

Robのソリューションは正しいものです@require。jQueryライブラリで使用し、ディレクティブが処理されるようにスクリプトを再インストールしてください。

追加する価値があると思うことの1つは、AJAXメソッドを除いて、スクリプトにjQueryを含めると、通常どおりjQueryを使用できることです。デフォルトでは、jQueryはGreasemonkeyコンテキストに存在しないXMLHttpRequestを検索します。GM_xmlhttpRequest(XHRのGreasemonkeyバージョン)のラッパーを作成し、jQueryを使用してラップされたバージョンをデフォルトとして指定する回避策について書きました。これを行うと、通常どおりにajaxSetup()使用できます。$.get$.post

また、タグ$.getJSONを使用してJSONPをロードするため、jQueryで問題が発生する可能性があります。<script>jQueryはGreasemonkeyウィンドウのスコープでコールバック関数を定義し、ロードされたスクリプトはメインウィンドウのスコープでコールバックを探すため、これによりエラーが発生します。$.get代わりにを使用し、結果を。で解析するのが最善の策JSON.parse()です。

于 2010-03-24T00:00:17.167 に答える
4

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タグがあることを確認してください。これがHelloWorldの例です。

// ==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!

于 2009-12-23T12:02:14.987 に答える
4

更新:以下のコメントが言うように、この答えは時代遅れです。

他のみんなが言っているように、@requireはスクリプトがインストールされたときにのみ実行されます。ただし、現在jQuery1.4。*はgreasemonkeyでは機能しないことにも注意してください。詳細については、こちらをご覧ください:http: //forum.jquery.com/topic/importing-jquery-1-4-1-into-greasemonkey-scripts-generates-an-error

状況が変わるまで、jQuery1.3.2を使用する必要があります。

于 2010-04-11T17:32:18.713 に答える
4

クロムを使用している場合は、クロムがサポートしていないため、代替手段を選択する必要があります@require

出典:Chromiumプロジェクト-ユーザースクリプト

Google ChromeのGreasemonkeyスクリプトでjQueryを使用するにはどうすればよいですか?

于 2014-05-30T06:02:06.233 に答える
2

@requireメタは、jQueryを使用してWebページ上のイベントのバインドを解除する場合は機能しません。Webページに含まれているjQueryライブラリを使用してから、Greasemonkeyで取得するvar $ = unsafeWindow.jQuery; 必要があります。Greasemonkeyでjqueryイベントハンドラーのバインドを解除するにはどうすればよいですか。

于 2012-07-13T18:43:39.747 に答える
2

Component unavailablejQueryスクリプトを直接インポートすると取得する可能性があります。

多分それは@Conleyが話していたものです...

使用できます

@require        http://userscripts.org/scripts/source/85365.user.js

これはGreasemonkeyで動作するように変更されたバージョンであり、jQueryオブジェクトを取得します

var $ = unsafeWindow.jQuery;
$("div").css("display", "none");
于 2010-09-04T01:29:56.480 に答える
0

@requireスクリプトが最初にインストールされたときに処理されるだけではありません!私の観察では、それは最初の実行時に処理されます!したがって、Greasemonkeyのコマンドを使用してスクリプトをインストールし、新しいスクリプトを作成できます注意しなければならないのは、パーツを追加する前に、ページのリロードがトリガーされないことだけです@require。(そして新しいスクリプトを保存します...)

于 2013-02-14T17:19:50.060 に答える