2

私たちのアプリケーションは jQuery 1.10.2 を読み込み、次にhttps://appcenter.intuit.com/Content/IA/intuit.ipp.anywhere.jsIntuit から読み込みます。どこでもスクリプトが<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6/jquery.min.js"></script>ヘッドに追加され、jQuery がリロードされます。

これは名前空間を一掃し、コードの多くを破壊しています。スクリプトは、jQuery が既に読み込まれていることを認識すべきではありませんか? jquery がリロードされないようにするにはどうすればよいですか?

ありがとう、フォレスト

4

2 に答える 2

2

編集:

問題は、false も返すようにwindow.jQuery.fn.jquery < "1.4.2"false を返すことのよう'1.10.2' < '1.4.2'です。これは、javascript が と見なすため1.1.2 < 1.4.2です。別のオプションは、|| window.jQuery.fn.jquery < "1.4.2"


jQuery を含めていることが確実な場合は、script タグを追加するコードの部分を変更するだけです。

スクリプトの下部にあります。変化する

// function that starts it all. timeout is 0
(function() {
    // these are the domains whose js files we're going to look at
    // intuit.ipp.ourDomain = /(.intuit.com).*?#(.*)/;
    intuit.ipp.ourDomain = /intuit.com$/;
    if(window.jQuery === undefined || window.jQuery.fn.jquery < "1.4.2") {
        // minimum version 1.4.2
        var script_tag = document.createElement('script');
        script_tag.setAttribute("type","text/javascript");
        script_tag.setAttribute("src", "https://ajax.googleapis.com/ajax/libs/jquery/1.6/jquery.min.js");
        script_tag.onload = function () {
            if(window.jQuery) {
                intuit.ipp.jQuery = window.jQuery.noConflict(true);
                intuit.ipp.anywhere.windowLoad();
            }
        };
        script_tag.onreadystatechange = function () { // Same thing but for IE
            if (this.readyState == 'complete' || this.readyState == 'loaded') {
                script_tag.onload();
            }
        };

        // Try to find the head, otherwise default to the documentElement
        (document.getElementsByTagName("head")[0] || document.documentElement).appendChild(script_tag);

    } else {
        // we do have jquery
        intuit.ipp.jQuery = window.jQuery;
        intuit.ipp.anywhere.windowLoad();
    }
})();

// function that starts it all. timeout is 0
(function () {
    // these are the domains whose js files we're going to look at
    // intuit.ipp.ourDomain = /(.intuit.com).*?#(.*)/;
    intuit.ipp.ourDomain = /intuit.com$/;
    // we do have jquery
    intuit.ipp.jQuery = window.jQuery;
    intuit.ipp.anywhere.windowLoad();
})();
于 2013-07-22T15:28:36.470 に答える