Как определить, какая версия Bootstrap используется из JavaScript?

Я смотрел CSS и JavaScript из Bootstrap 3. Ничто не является модульным под общим псевдонимом. Для JavaScript он вводится в прототип jQuery...

Как можно определить, какая версия Bootstrap включена в пользовательскую веб-страницу с сторонней плагиновой/библиотечной точки зрения с JavaScript?

Ответы

Ответ 1

Версия каждого из плагинов jQuery Bootstrap может быть доступна через свойство VERSION конструктора плагинов

$.fn.tooltip.Constructor.VERSION

Ответ 2

Как было предложено в комментариях, единственный function, который, кажется, был удален в Bootstrap 3, был typehead, даже тогда - кажется, нет надежного способа определить, какую версию Bootstrap загрузил сайт.

var bsVersion = ( typeof $.fn.typeahead !== 'undefined' ? '2.3.2' : '3.0.0' );

Ответ 3

Если вы хотите захватить версию Bootstrap на основе своих комментариев в файле CSS, вы можете использовать следующий код. Он был протестирован, чтобы убедиться, что он работает.

Предположим, что Bootstrap CSS file содержит комментарий, отображающий версию (она всегда действительно):

/*!
 * Bootstrap v3.0.3 (http://getbootstrap.com)
 * Copyright 2013 Twitter, Inc.
 * Licensed under http://www.apache.org/licenses/LICENSE-2.0
 */

Помните о той же политике происхождения при использовании jQuery.get(), где запрос не будет успешно выполнен, если источник данных из другого домена, субдомена или протокола.

$(function () {
    $.get("dist/css/bootstrap.min.css", function (data) {
        var version = data.match(/v[.\d]+[.\d]/);
        alert(version);
    });
});

Пример онлайн

Пример онлайн, основанный на захвате локального файла с jsfiddle.net, но не на getbootstrap.com, из-за упомянутых выше соображений безопасности и извлечения комментария, который должен отображаться соответственно после того, как вы нажмете Кнопка запуска.

Вы также можете проверить его, перейдя в getbootstrap.com, открыв консоль и вставив код. После того, как вы запустите его, вы получите текущую версию загрузочного бутстрапа, отображаемую, которая в настоящий момент v3.0.3.

Ответ 4

Я не думаю, что это возможно, просмотрев исходный код загрузочных плагинов Javascript, единственное, что показывает версию, это комментарий поверх каждого плагина или всего пакета. Возможно, вы можете попытаться проанализировать JS файл, чтобы получить комментарий и сделать некоторое регулярное выражение, чтобы получить довольно сложную версию.

Ответ 5

Я разделяю мой модуль Javascript:

/**
 * Created by LJT.
 */
myBootstrapUtils = function () {

    /**
     * Search bootstrap.min.js or bootstrap.js in DOM
     * @return {*}
     */
    function getBootStrapJsUrl() {
        var bootstrapUrl;
        $('script').each(function () {
            var externalJsSrc = $(this).attr('src');
            if (typeof externalJsSrc !== 'undefined') {
                if (externalJsSrc.toLowerCase().lastIndexOf('bootstrap.min.js') !== -1 || externalJsSrc.toLowerCase().lastIndexOf('bootstrap.js') !== -1) {
                    bootstrapUrl = externalJsSrc;
                    return false;
                }
            }
        });
        return bootstrapUrl;
    }

    function hasBootStrapJs() {
        return getBootStrapJsUrl() !== undefined;
    }


    /**
     * This function grab the bootstrap version in Js File
     * @param data Data file representation
     * @return {*}
     */
    function analyseBootstrapJsFile(data) {
        var bootstrapVersion;
        var matches = data.match(/v[.\d]+[.\d]/);
        if (matches === null) {
            bootstrapVersion = 'unknown';
        } else {
            //Security Array.isArray(matches) === true ?
            bootstrapVersion = matches[0];
        }
        //console.log(bootstrapVersion);
        return bootstrapVersion;
    }


    function getBootStrapJsVersionSyncMode() {
        var version,
            bootstrapUrl = getBootStrapJsUrl();
        if (bootstrapUrl !== undefined) {
            jQuery.ajax({
                url: bootstrapUrl,
                success: function (data) {
                    version = analyseBootstrapJsFile(data);
                },
                async: false
            });
        }
        return version;
    }

    function getBootStrapJsVersionAsyncMode(defered) {
        var bootstrapUrl = getBootStrapJsUrl();
        if (bootstrapUrl !== undefined) {
            $.get(bootstrapUrl)
                .then(function (data) {
                    version = analyseBootstrapJsFile(data);
                    defered.resolve(version);
                })
                .fail(function () {
                    defered.fail();
                });
        } else {
            defered.fail();
        }
    }

    /**
     * Example for async mode usage
     */
    function exampleAsyncMode() {
        var dfd = $.Deferred();
        dfd.done(function (version) {
            console.log('My bootstrap version is : ' + version);
        });
        dfd.fail(function (version) {
            console.log('Error while request bootstrap version ...');
        });
        getBootStrapJsVersionAsyncMode(dfd);
    }

    /**
     * Easy way to get bootstrap plugin version
     * @see http://getbootstrap.com/javascript/#js-version-nums
     * @return {*}
     */
    function getBoostrapModalVersion() {
        return $.fn.modal.Constructor.VERSION;
    }

    return {
        hasBootStrapJs: hasBootStrapJs,
        getBootStrapJsVersionSyncMode: getBootStrapJsVersionSyncMode,
        getBootStrapJsVersionAsyncMode: getBootStrapJsVersionAsyncMode
    }
}();

console.log(myBootstrapUtils.hasBootStrapJs());
console.log(myBootstrapUtils.getBootStrapJsVersionSyncMode());
//myBootstrapUtils.exampleAsyncMode();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>