1. ホーム
  2. javascript

[解決済み] 同じページで複数のバージョンのjQueryを使用することはできますか?

2022-03-22 13:32:12

質問

私が携わっているプロジェクトでは、顧客のWebページでjQueryを使用する必要があります。顧客は私たちが提供するコードの塊を挿入し、それにはいくつかの <script> 要素でウィジェットを構築し <script> -作成された <iframe> . もしまだ最新版のjQueryを使用していなければ、これには(ほとんどの場合)、以下のものが含まれます。 <script> GoogleがホストしているバージョンのjQueryのためのものです。

問題は、お客様によっては、すでに古いバージョンのjQueryがインストールされている場合があることです。少なくともかなり新しいバージョンであれば問題ありませんが、当社のコードはjQueryライブラリに最近導入された機能に依存しているため、お客様のjQueryのバージョンが古すぎる場合があります。jQueryの最新バージョンへのアップグレードを要求することはできません。

新しいバージョンのjQueryをロードして、私たちのコードのコンテキスト内でのみ使用し、顧客のページ上のコードに干渉したり、影響を与えたりしない方法はないのでしょうか?理想的には、jQueryの存在を確認し、バージョンを検出し、それが古すぎる場合は、私たちのコードに使用するためだけに最新バージョンを何らかの方法で読み込むことができるかもしれません。

の中でjQueryを読み込むことを思いつきました。 <iframe> を含む顧客のドメインで、私たちの <script> というのは実現可能なように思えますが、もっとエレガントな方法があればと思っています(もちろん、パフォーマンスや複雑さといったペナルティなしに、余計な <iframe> s).

解決方法は?

jQueryのnoconflictモードがあるので、可能です。 http://blog.nemikor.com/2009/10/03/using-multiple-versions-of-jquery/

<!-- load jQuery 1.1.3 -->
<script type="text/javascript" src="http://example.com/jquery-1.1.3.js"></script>
<script type="text/javascript">
var jQuery_1_1_3 = $.noConflict(true);
</script>

<!-- load jQuery 1.3.2 -->
<script type="text/javascript" src="http://example.com/jquery-1.3.2.js"></script>
<script type="text/javascript">
var jQuery_1_3_2 = $.noConflict(true);
</script>

では、代わりに $('#selector').function(); とすると jQuery_1_3_2('#selector').function(); または jQuery_1_1_3('#selector').function(); .