1

jquery のロードに依存するウィジェットを作成しています。以下を使用して、それとコードをロードしています。

(function () {

    var jqueryVersion = (window.jQuery !== undefined) ? window.jQuery.fn.jquery.charAt(0) + window.jQuery.fn.jquery.charAt(2) : 0;

    var jQuery;
    /******** Called once jQuery has loaded ******/
    function scriptLoadHandler() {
        jQuery = window.jQuery.noConflict(true);
        main();
    }

    /******** Load jQuery if not present *********/
    if (parseInt(jqueryVersion) < 17) {
        var script_tag = document.createElement('script');
        script_tag.setAttribute("type", "text/javascript");
        script_tag.setAttribute("src", "//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js");
        script_tag.onload = scriptLoadHandler;
        script_tag.onreadystatechange = function () { // Same thing but for IE
            if (this.readyState === 'complete' || this.readyState === 'loaded') { scriptLoadHandler(); }
        };
        document.getElementsByTagName("head")[0].appendChild(script_tag);
    } else {
        jQuery = window.jQuery;
        main();
    }

    function main() {
        //my code goes in here
        //leaving blank for now because I still get error
    }

})();

私はここからそのほとんどを得ました: http://alexmarandon.com/articles/web_widget_jquery/

.on() メソッドを使用しているため、jquery 1.7 以降が必要です。1.7 より古い jquery を使用しているページでこれを実行すると、IE でエラーが発生することがあり、古いバージョンの jquery またはページ上の他の js と競合していると思われます。いくつかのエラー:

SCRIPT5007: 未定義または null 参照のプロパティ 'forceInt' を取得できません

SCRIPT5007: オブジェクトが必要です

SCRIPT5007: 未定義または null 参照のプロパティ 'easing' を取得できません

SCRIPT438: オブジェクトはプロパティまたはメソッド 'on' をサポートしていません

変更すると、これらのエラーはなくなります

jQuery = window.jQuery.noConflict(true);

jQuery = window.jQuery.noConflict();

私は何か間違ったことをしていますか?

4

1 に答える 1

3

「ハンドラ」が 2 回呼び出されることが問題の原因である可能性があります。

http://msdn.microsoft.com/en-us/library/ie/hh180173(v=vs.85).aspx

また、http://api.jquery.com/jQuery.noConflict/から取得

「必要に応じて、メソッドに true を引数として渡すことで、jQuery 名を解放することもできます。これが必要になることはめったになく、これを行う必要がある場合 (たとえば、複数のバージョンの jQuery ライブラリを使用する必要がある場合)同じページ)、ほとんどのプラグインは jQuery 変数の存在に依存しており、この状況では正しく動作しない可能性があることを考慮する必要があります。」

于 2013-04-19T20:18:24.733 に答える