-1

Firefox でのみ使用する Greasemonkey スクリプトを開発していますが、助けが必要です。jQuery を使用する予定ですが、後で他のスクリプトを使用することも考えられます。for GM は最初のインストール時にのみスクリプトをダウンロードする@requireため、後でコードを更新しても、外部スクリプトの更新はダウンロードされません。

したがって、私は疑問に思っていました:生のjQueryコードを貼り付けるとどうなりますか? ここにある IE: http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js

エラーの原因になりますか?スクリプトが使用されている Web サイトが jQuery 1.3.2 を使用していて、jQuery 1.4.2 をページに貼り付けた場合、またはその逆の場合はどうなりますか? 基本的に、jQuery、jQuery UI などのスクリプトの完全なソースを貼り付けた場合に発生する欠点やエラーは何ですか?

ありがとう!

4

3 に答える 3

0

GMの場合、各スクリプトは独自のスコープで実行されるため、を使用する@requireか、ライブラリ(jQueryなど)をユーザースクリプト(実質的に同等)に直接貼り付けると、ページによって読み込まれるスクリプトには影響しません。したがって、ページにjQueryが既にロードされているかどうかは関係ありませんが、ユーザースクリプトに任意のバージョンをロードできます。ただし、ユーザースクリプトで機能しないjQueryのバージョンがいくつかありますが、jQueryを機能させるために、window変数参照をunsafeWindowに変更することをお勧めする場合があります。これを行うと、unsafeWindowが原因で、今言ったことがすべてウィンドウから消えます。スコープはページのスクリプトがロードされる場所であるため、それで遊ぶということは、ユーザースクリプトのスコープを離れることを意味します。

したがって、jQueryを使用する場合は、@requireunsafeWindowを使用せずに'd(1.3.2が機能する可能性があると思います)できるバージョンを見つけてください。

unsafeWindowを使用する必要がある場合は、次のようにします。

// check that jQuery is not already loaded
if (!unsafeWindow.$) {
  // paste jQuery code here..
}
于 2010-06-27T03:06:35.080 に答える
0

これは以前に行ったことがあります - 上部に長い jQuery 行が 1 行あります。エレガントではありませんが、当面は問題なく動作し、期待どおりに動作します。経由で Web ページのスコープに明示的にアクセスしない限り、Greasemonkey スクリプト内の変数は Web ページ自体には影響しませんunsafeWindow

しかし、それは少し前のことであり、jQuery 1.4 ではこの方法はもう機能しないと思います。1.3 を使用するオプションがある場合は、代わりにそれを試してください。

于 2010-06-27T03:59:21.430 に答える
-2

コードを含めると、ページ上の jQuery のバージョンが上書きされる可能性が高くなります。ほとんどの場合、大したことではありませんが、jQuery 1.4 では以前のバージョンの一部の機能が非推奨になり、サイトに既にある JavaScript が壊れる可能性があります。最も注目に値するのは、1.4 より前のバージョンで$()はドキュメントが返され、現在は空の jQuery オブジェクトが返されることです。

それを行う最善の方法は、jQuery が既に読み込まれているかどうかを確認することです。つまり、jQuery オブジェクトが存在するかどうかを確認し、次に使用する必要がある関数が存在するかどうかを確認します (1.4 の新しい関数である場合)。 . そうでない場合は、Google キャッシュなどからコードを含めます。AJAX リクエストを作成し、返されたスクリプトを実行できます。

于 2010-06-25T17:19:51.003 に答える