ホームページ >ウェブフロントエンド >jsチュートリアル >バージョン 1.0 にアップグレードした後、Greasemonkey スクリプトが機能しないのはなぜですか?

バージョン 1.0 にアップグレードした後、Greasemonkey スクリプトが機能しないのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-18 05:21:02185ブラウズ

Why Is My Greasemonkey Script Not Working After Upgrading to Version 1.0?

Greasemonkey 1.0 での jQuery の競合

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 サイトの他の関連記事を参照してください。

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