0

jquery と jquery ui を必要とするブックマークレットを作成しており、堅牢で柔軟なバージョンを機能させるのに問題があります (SO とさまざまなブログをトロールしました) が、1 つのファイルのみが読み込まれていること (jQuery など) をチェックするか、jQuery と他のファイルを読み込むだけのようです。ファイルが最初にロードされているかどうかを確認せずに順番に並べます。

私はこれが本当に好きです:

(function(){

    // the minimum version of jQuery we want
    var v = "1.8.2";

    // check prior inclusion and version
    if (window.jQuery === undefined || window.jQuery.fn.jquery < v) {
        var done = false;
        var script = document.createElement("script");
        script.src = "http://ajax.googleapis.com/ajax/libs/jquery/" + v + "/jquery.min.js";
        script.onload = script.onreadystatechange = function(){
            if (!done && (!this.readyState || this.readyState == "loaded" || this.readyState == "complete")) {
                done = true;
                initMyBookmarklet();
            }
        };
        document.getElementsByTagName("head")[0].appendChild(script);
    } else {
        initMyBookmarklet();
    }

    function initMyBookmarklet() {
        (window.myBookmarklet = function() {
            $('body').append('hello world');
        })();
    }

})();

jQuery の最小バージョンを設定し、必要な場合にのみロードします。しかし、これを jQuery UI でどのようにまとめるのですか? たとえば、最小バージョンを設定し、必要な場合にのみロードし、正しい順序でロードするようにします。

どんなポインタでも大歓迎です、

4

1 に答える 1

0

あなたは正しい軌道に乗っています... jqueryをロードした後、jquery uiをもう一度確認してください

(function(){
    var addScript = function (path, callback) {
        var done = false;
        var script = document.createElement("script");
        script.src = path;
        script.onload = script.onreadystatechange = function(){
            if (!done && (!this.readyState || this.readyState == "loaded" || this.readyState == "complete")) {
                done = true;
                if (callback) {
                    callback ();
                }
            }
        };
        document.getElementsByTagName("head")[0].appendChild(script);
    };

    var initMyBookmarklet = function () {
        (window.myBookmarklet = function() {
            $('body').append('hello world');
        })();
    }

    var checkForJQueryUI = function () {
        if (condition for jquery ui) {
            addScript("http://jquery-ui-path-goes-here/file.js", initMyBookmarklet);
        } else {
            initMyBookmarklet();
        }
    };

    var checkForJQuery = function () {
        // the minimum version of jQuery we want
        var v = "1.8.2";
        // check prior inclusion and version
        if (window.jQuery === undefined || window.jQuery.fn.jquery < v) {
            addScript("http://ajax.googleapis.com/ajax/libs/jquery/" + v + "/jquery.min.js", checkForJQueryUI);
        } else {
            checkForJQueryUI();
        }
    };

    checkForJQuery();
})();
于 2013-03-16T11:07:35.070 に答える