95

如何检查bootstrap.js页面上是否加载了文件(bootstrap.js文件本身可能被编译/缩小为另一个更大的 JS 文件)?

4

9 回答 9

132

您需要做的只是检查是否有特定于 Bootstrap 的方法可用。我将在此示例中使用模态(适用于 Bootstrap 2-4):

// Will be true if bootstrap is loaded, false otherwise
var bootstrap_enabled = (typeof $().modal == 'function');

它显然不是 100% 可靠的,因为模态函数可以由不同的插件提供,但尽管如此,它还是可以完成这项工作......

您还可以更具体地检查 Bootstrap 3-4(从 3.1+ 开始工作):

// Will be true if Bootstrap 3-4 is loaded, false if Bootstrap 2 or no Bootstrap
var bootstrap_enabled = (typeof $().emulateTransitionEnd == 'function');

请注意,所有这些检查都要求jQuery 已经加载

于 2013-02-08T08:42:10.137 回答
27

我宁愿检查特定的引导插件,因为模式或工具提示很常见,所以

if(typeof($.fn.popover) != 'undefined'){
 // your stuff here
}

或者

 if (typeof $.fn.popover == 'function') { 
   // your stuff here
  }

适用于两个引导版本

于 2014-03-04T19:56:09.470 回答
6

if (typeof([?])=='undefined') { /*bootstrap is not loaded */}

其中 [?] 将是在 JS 文件本身中定义的任何对象或命名空间。

javascript中不存在“包含”的概念。

于 2012-12-18T12:38:56.287 回答
5

https://github.com/netdna/bootstrap-cdn/issues/111#issuecomment-14467221

<script type="text/javascript">
    // <![CDATA[
    (function($){

        function verifyStyle(selector) {//http://stackoverflow.com/a/983817/579646
            var rules;
            var haveRule = false;

            if (typeof document.styleSheets != "undefined") {   //is this supported
                var cssSheets = document.styleSheets;

                outerloop:
                for (var i = 0; i < cssSheets.length; i++) {

                     //using IE or FireFox/Standards Compliant
                    rules =  (typeof cssSheets[i].cssRules != "undefined") ? cssSheets[i].cssRules : cssSheets[i].rules;

                     for (var j = 0; j < rules.length; j++) {
                         if (rules[j].selectorText == selector) {
                                 haveRule = true;
                                break outerloop;
                         }
                    }//innerloop

                }//outer loop
            }//endif

            return haveRule;
        }//eof

        <!-- BOOTSTRAP JS WITH LOCAL FALLBACK-->
        if(typeof($.fn.modal) === 'undefined') {document.write('<script src="<?=$path_js?>/bootstrap.min.js"><\/script>')}

        <!-- BOOTSTRAP CDN FALLBACK CSS-->
        $(document).ready(function() {

            if( verifyStyle('form-inline') )
            {
                $("head").prepend("<link rel='stylesheet' href='<?=$path_css?>bootstrap.min.css' type='text/css' media='screen'>");
            }
            else
            {
                //alert('bootstrap already loaded');
            }
        });
    })(jQuery);
    // ]]>
    </script>

兼容 jQuery 安全模式,

如果您使用自定义 css,css 检查可能需要调整

于 2013-07-24T11:34:25.103 回答
4

AFAIK,简短的回答是

无法检测是否加载了 twitter bootstrap

细节

Twitter bootstrap 本质上是 css 和 jquery 的一组 js 插件。插件名称是通用的,如 $.fn.button 并且要使用的插件集也是可定制的。仅按名称存在插件无助于确定是否存在引导程序。

于 2012-12-18T12:52:48.267 回答
2

您可以检索<script>元素并检查它们的 src 属性,但正如您所指出的,您要查找的是代码本身而不是文件名,因为代码可能在任何文件中。

检测 JavaScript 服务/类/等的最佳方法。在页面中加载,是在 DOM 中查找您知道由给定 JS 加载的内容。

例如,要检测是否加载了 jQuery,您可以执行null !== window.jQuery或找出加载的 jQuery 的版本,jQuery.prototype.jquery

于 2012-12-18T12:38:01.900 回答
0

我发现这是最简单的方法。就 css 而言,我不确定是否有一种简单的方法可以做到这一点。

<script>typeof Alert !== 'undefined' || document.write('<script src="/js/bootstrap/bootstrap.min.js">\x3C/script>')</script>
于 2017-08-11T20:56:44.677 回答
0

添加引导链接并注意 h1 标签的变化。

于 2019-09-07T20:37:56.740 回答
-3

如果你在控制台输入这个,它将输出 jQuery 版本: console.log(jQuery().jquery);

于 2017-06-23T17:42:20.010 回答