0

古いバージョンの jQuery (1.4) と新しいバージョン (1.11) を使用しているため、それらには 2 つの異なる名前空間があります。1.4 は標準の $ を使用し、1.11 は jQuery1111 を使用します。

現在、1.11 バージョンを使用する必要がある froala エディターを実装しようとしています。これを実現するために、froala コードを次のように変更しました。

(function (a) {
    "function" == typeof define && define.amd ? define(["jquery"], a) : "object" == typeof module && module.exports ? module.exports = function (b, c) {
        return void 0 === c && (c = "undefined" != typeof window ? require("jquery") : require("jquery")(b)), a(c), c
    } : a(jQuery)
}(function (a) {

...

}(window.jQuery1111)));

しかし、これによりエラーが発生しますa is not a function(ただし、スクリプトは実行できるようです)。上記のスクリプトの 4 行目でエラーがキャッチされます。

a(jQuery)4行目を変更するjQuery1111とエラーなしで実行されますが、それが正しいかどうか、または後でバグが発生するかどうかはわかりません。

これは、サードパーティのコンポーネントをデフォルト以外の jQuery 名前空間に実装する正しい方法ですか?

更新: スクリプトの順序

中身<head />

<script src="/js/jquery.js" type="text/javascript"></script>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
    var jQuery1111 = jQuery.noConflict(true);
    window.jQuery1111 = window.jQuery1111 || jQuery1111;
</script>

中身<body />

<script type="text/javascript" src="/scripts/froala_editor.min.js"></script>
4

1 に答える 1

0

サードパーティのライブラリを変更せずに、スクリプト インクルードの順序を変更して問題を解決できます。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/froala-editor/2.1.0/js/froala_editor.min.js"></script>
<script type="text/javascript">
  var jQuery1111 = jQuery.noConflict(true);
  window.jQuery1111 = window.jQuery1111 || jQuery1111;
</script>
于 2016-02-09T07:20:13.600 に答える