ホームページ  >  記事  >  ウェブフロントエンド  >  Greasemonkey 1.0 での jQuery サンドボックスの競合を解決するにはどうすればよいですか?

Greasemonkey 1.0 での jQuery サンドボックスの競合を解決するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-19 18:54:02315ブラウズ

How Do I Resolve jQuery Sandbox Conflicts in Greasemonkey 1.0?

Greasemonkey 1.0 での jQuery サンドボックスの競合:

Greasemonkey 1.0 の導入により、サンドボックス メカニズムが大幅に変更され、その結果、プラットフォームと Greasemonkey を使用する Web サイトの jQuery バージョンscripts.

サンドボックスの動作を変更する新しい @grant コードが原因で競合が発生します。これにより、@require メタデータ内の jQuery に依存するスクリプトが、ページ自体の jQuery インスタンスからの干渉により誤動作する原因となりました。

競合の解決:

Greasemonkey の公式ドキュメントには、次のことが示唆されています。 this.$ = this.jQuery = jQuery.noConflict(true) に関する回避策。ただし、このソリューションはすべての場合に効果的に機能するとは限らず、コーディング原則を損なう可能性があります。

より最適なソリューションには、サンドボックス メカニズムを再実装することが含まれます。これは、Greasemonkey スクリプトのメタデータ ブロックで @grant 値 (none 以外) を指定することで実現できます。

メタデータ ブロックの例:

// @grant  GM_addStyle
// @grant  GM.getValue
// ==/UserScript==
/*- The @grant directive is needed to work around a design flaws introduced in GM 1.0
    and again in GM 4.0.
    It restores the sandbox.
*/

Byサンドボックスを復元すると、異なる jQuery インスタンス間の競合が解決され、スクリプトは Tampermonkey や Tampermonkey などの優れたエンジンとの互換性を取り戻します。暴力的な猿。

以上がGreasemonkey 1.0 での jQuery サンドボックスの競合を解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。