私はこの行を入れてみましたが、うまくいきません:
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.js
jQueryはGreasemonkeyではまったく機能しません。 GreasemonkeyでjQueryを使用する他の方法はありますか?
-
同じ問題を抱えているすべての人々のために、ファイルをグリーススポットにアップロードし、そこからインストールする必要があります。
[新しいスクリプトの作成]オプションは機能しません。
おそらく、Greasemonkeyの最近の十分なバージョンがないでしょう。 @require
を追加したのはバージョン0.8でした。
// @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風のユーザースクリプト、SafariのGreasekitなど)で動作させたい場合は、@ requireなどのGM固有の構造を使用しないことが役立ちます。
Robのソリューションは正しいものです。jQueryライブラリで@require
を使用し、ディレクティブが処理されるようにスクリプトを再インストールしてください。
追加する価値があると思うことの1つは、スクリプトにjQueryを含めたら、通常はjQueryを使用できることです。AJAXメソッドを除く。デフォルトでは、jQueryはGreasemonkeyコンテキストに存在しないXMLHttpRequestを探します。 回避策 GM_xmlhttpRequest(XHRのGreasemonkeyバージョン)のラッパーを作成し、jQueryのajaxSetup()
を使用して、ラップバージョンをデフォルトとして指定することについて書きました。これを行うと、通常どおり$.get
と$.post
を使用できます。
JQueryは$.getJSON
タグを使用してJSONPをロードするため、jQueryの<script>
に問題がある場合もあります。 jQueryはGreasemonkeyウィンドウのスコープでコールバック関数を定義し、ロードされたスクリプトはメインウィンドウのスコープでコールバックを探すため、これはエラーにつながります。最善の方法は、代わりに$.get
を使用し、JSON.parse()
で結果を解析することです。
chromeを使用している場合、Chromiumは@require
をサポートしていないため、代替手段を選択する必要があります。
ソース: The Chromium Project-User scripts
Google ChromeのGreasemonkeyスクリプトでjQueryを使用するにはどうすればよいですか? の詳細と代替案
Update:以下のコメントにあるように、この答えは時代遅れです。
他の皆が言ったように、@ requireはスクリプトがインストールされたときにのみ実行されます。ただし、現在、jQuery 1.4。*はグリースモンキーでは動作しないことに注意してください。詳細については、こちらをご覧ください: http://forum.jquery.com/topic/importing-jquery-1-4-1-into-greasemonkey-scripts-generates-an-error
状況が変わるまでjQuery 1.3.2を使用する必要があります。
GreasemonkeyのNew User Scriptを使用して新しいスクリプトを作成できますが、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!
jQueryを使用してWebページ上のイベントのバインドを解除する場合、@ requireメタは機能しません。Webページに含まれるjQueryライブラリを使用し、var $ = unsafeWindow.jQuery;
HowでGreasemonkeyで取得する必要があります私はグリースモンキーでjqueryイベントハンドラーのバインドを解除しますか?
JQueryスクリプトを直接インポートすると、Component unavailable
を取得する場合があります。
たぶんそれは@Conleyが話していたことです...
使用できます
@require http://userscripts.org/scripts/source/85365.user.js
これは、Greasemonkeyで動作するように修正されたバージョンであり、jQueryオブジェクトを取得します
var $ = unsafeWindow.jQuery;
$("div").css("display", "none");
@require
is NOTは、スクリプトが最初にインストールされたときにのみ処理されます!私の観察では、最初の実行時に処理されます! can Greasemonkeyのコマンドを使用して、新しいスクリプトを作成するスクリプトをインストールします。注意する必要があるのは、@require
partを追加する前に、ページのリロードがトリガーされないことだけです。 (そして新しいスクリプトを保存...)