ほとんどnoConflict()
の場合、jQuery では機能する可能性がありますが、拡張機能の場合は依然として悪い考えであり、他のほとんどのライブラリやユーティリティには適用されません。
賢明なことは、コードをまったく挿入しないことです (1 つの例外を除いて1 )。拡張機能には、必要なライブラリを含めることができ、そうすることには多くの利点があります。
ページの JavaScript と競合する可能性はありません。
予告なしに変更されるページの JS に依存することはありません。拡張機能が壊れる頻度は少なくなります。
ライブラリを注入するときは、外部サーバーから取得する必要があります。これにより、拡張機能が遅くなり、制御できないクラッシュに対して脆弱になります。
拡張機能にライブラリを含めると、(a) 常に存在し、(b) 常に既知の適切なバージョンであり、(c) 遠く離れたサーバーではなく、ローカル マシンからほぼ瞬時に読み込まれます。
ページの JavaScript が無効になっている場合でも、拡張機能を実行できます。
拡張機能は、ライブラリと拡張 API を同時に利用できます。
拡張機能を使えば、jQuery などのライブラリを簡単に組み込むことができます。たとえば、Chrome の場合:
- ライブラリ ファイルを拡張機能フォルダーにコピーします。
ライブラリをファイルに追加しmanifest.json
ます。
jQuery を組み込んだ単純なマニフェストは次のようになります。
{
"content_scripts": [ {
"exclude_globs": [ ],
"include_globs": [ "*" ],
"js": [ "jquery.min.js", "myJS.js" ],
"matches": [ "http://stackoverflow.com/*"
]
} ],
"description": "Hello world with jQuery",
"name": "Hello world with jQuery",
"version": "1"
}
このメカニズムは、Firefox やその他のブラウザーでも同様です。
1唯一の例外は? 拡張機能の場合、次の条件がすべて満たされている場合にのみ、コードを挿入します。
- 拡張機能は、特定の 1 つのサイトのみを対象としています。
- 絶対に、積極的に、ターゲット ページが作成するオブジェクト/関数を使用する必要があります。
- 拡張機能で機能を簡単に複製するには複雑すぎます。
- サイトのデザインを少し変更するたびに、拡張機能を書き直したり調整したりする必要はありません。
- すべてのユーザーがサイトの JavaScript を有効にしていることを確認できます。
- ライブラリを提供するサイトがかなり高速であり、頻繁にオフラインにならないことを確認できます。