JQuery クロスドメインの挿入
-
19-09-2019 - |
質問
JsonP を使用して JQuery のスクリプトを挿入しても安全ですか?
私の Web アプリケーションのインストールは、顧客の Web サイトにスクリプトを追加することです (Google Analytics など)。私は、独自に挿入したスクリプトの一部として、顧客の Web サイトで JQuery を使用することを考えていました。
何らかのリスクがあるのではないかと疑問に思いました。アプリケーションはあらゆる種類の Web サイトをサポートする必要があります。
ありがとうヤロン
解決
ライブラリで何をしているのかを知るのは難しいですが、複数のサイトで使用するために何らかの種類のウィジェットを構築しているようです。
@K Prime からの啓発的なコメントをきっかけに、必要に応じて jQuery の 2 つのコピーを含める方法を正確に調査することになった後、ここから下が更新されました。
それは 一般的に サイト上に存在するウィジェットを構築している場合、jQuery を使用するのは悪いです 外 コントロールは、「この埋め込みコードをコピーしてサイトに貼り付ける」タイプの機能を使用してサイトに追加されます。 (もちろん、jQuery ウィジェットとプラグインはたくさんありますが、これらは通常、一般的な「コピーアンドペースト」ウィジェット タイプの実装ではなく、開発者によって選択およびインストール/実装されます)
おそらく最大の理由は(気づいた後では) できる 同じページで jQuery の 2 つのコピーを実行すると、ファイル サイズが増加します。保証されるかどうかは、特定のニーズと機能によって異なります。シンプルな小さなウィジェット = ストレートな JS。複雑な Web サイトのフロントエンド拡張機能の場合、おそらくファイル サイズを増やす価値があります。
これを適切に含めるには (サイトで競合が発生しないように)、次のようなワークフローに従います。
- ここの他の回答で述べたように、Google APIを使用してページにjQueryを動的に追加します。
- 走る
var mywidget_jQuery = $.noConflict( true );
これは元の意味を復元します$
そして ~の本来の意味を取り戻すwindow.jQuery
. - スクリプト ファイルを動的に追加しますが、必ず次のように全体を自己実行の匿名関数でラップしてください。
JS
(function($){
... Your code here ...
})(mywidget_jQuery);
これで安心してご利用いただけます $
特別な関数内と、必要なすべての jQuery 機能を問題なく使用できます。
追加クレジット ステップ 1 と 2 を if ステートメントでラップして、次のことをテストすることができます。 window.jQuery
が定義されており、定義されている場合はテストします。 jQuery.fn.version
コードを実行するのに十分な高さです。いずれかのテストが失敗した場合は、ステップ 1 と 2 を実行します。ただし、それが通過した場合は、実行するだけです var mywidget_jQuery = window.jQuery
そのため、手順 3 で追加したスクリプトは引き続き実行されます。