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

私の知る限り、短い答えは

Twitter ブートストラップがロードされているかどうかを検出することはできません

詳細

Twitter ブートストラップは基本的に css であり、jquery への js プラグインのセットです。プラグイン名は $.fn.button のような一般的なもので、使用するプラグインのセットもカスタマイズ可能です。名前だけのプラグインの存在は、ブートストラップが存在することを確認するのに役立ちません。

于 2012-12-18T12:52:48.267 に答える
2

要素を取得<script>してそれらの src 属性を確認できますが、指摘したように、探しているのはコード自体であり、コードは任意のファイルにある可能性があるため、ファイル名ではありません。

JavaScript サービス/クラス/etc. ページに読み込まれるとは、指定された JS によって読み込まれることがわかっている DOM 内の何かを探すことです。

たとえば、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 に答える