ホームページ >ウェブフロントエンド >jsチュートリアル >バージョン 1.0 にアップグレードした後、Greasemonkey スクリプトが機能しないのはなぜですか?
Greasemonkey 1.0 のリリース以来、多くのユーザーが、同じく jQuery を使用する Web サイトと対話するときに Greasemonkey スクリプトが適切に実行されないという問題に遭遇しました。 。この競合は、新しく導入された @grant コードに起因します。
競合について:
Greasemonkey 1.0 にアップグレードした後、Greasemonkey スクリプトのサンドボックス メカニズムが根本的に変更されました。スクリプトが特定の API をリクエストできるようにする @grant コードが、スクリプトが jQuery を含むページの環境にアクセスするために必要になりました。ただし、Web サイトにすでに jQuery が含まれている場合、バージョンと名前空間の競合により競合が発生します。
問題への対処:
この競合を解決するために、数多くの試みが行われてきました。推奨される解決策の 1 つは、
this.$ = this.jQuery = jQuery.noConflict(true);
を利用することです。ただし、このアプローチはすべてのケースで互換性を保証するものではありません。より効果的な戦略は、サンドボックスを復元することです。
サンドボックスの復元:
サンドボックスを復元して競合を軽減するには、Greasemonkey スクリプトのメタデータ ブロックを編集し、次の行を追加します。行:
// @grant GM_addStyle // @grant GM.getValue // ==/UserScript==
これらの @grant ディレクティブは、次の API を指定します。 Greasemonkey スクリプトでよく使用されます。これらを含めることで、サンドボックスが再度有効になり、競合が解決されます。
追加メモ:
このサンドボックス復元方法は、Tampermonkey や Violentmonkey などの優れたエンジンとの互換性を保証します。これは、jQuery 名前空間を変更するよりも安定性と信頼性の高いソリューションです。
以上がバージョン 1.0 にアップグレードした後、Greasemonkey スクリプトが機能しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。