2012-12-18 19 views

答えて

88

ブートストラップ固有の方法が利用可能かどうかを確認するだけです。モーダル機能は、異なるプラグインによって提供することができるので、これは明らかに100%信頼できるものではありません

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

、それにもかかわらず、それは仕事をする:私は(ブートストラップ2または3のために動作します)この例では、モーダルを使用します...

また、ブートストラップ3をチェックすることもできます(3で動作します)。1):

// Will be true if bootstrap 3 is loaded, false if bootstrap 2 or no bootstrap 
var bootstrap3_enabled = (typeof $().emulateTransitionEnd == 'function'); 
+0

ありがとう! cdnjsからローカルフォールバックを使ってブートストラップをロードするのに非常に便利です。 – ptim

+0

'.modal'以外のものを使うべきです.....この例では、すべての場所で偽陽性です。 – dhaupin

+0

はい、偽陽性が可能ですが、これは真です。残念ながら、ほとんどの可能なチェックはBootstrapにかなり一般的に付けられているので、この問題を避けるのは難しいですが、おそらくもっと不明なものはscrollspy.noConflictです。したがって、scrollspyとnoConflictの両方が存在するかどうかをチェックすることは、偽陽性を起こしにくくなります。さらに信頼性の高いチェックをいくつか組み合わせて実行することもできます。 – Aron

2

<script>要素を取得してsrc属性を調べることができますが、指摘したように、コード自体はファイル自体であり、ファイル名ではありません。

JavaScriptサービス/クラス/などがあるかどうかを検出する最適な方法です。指定されたJSによってロードされていることをあなたが知っているDOM内の何かを探すことです。

など。 、jQueryのがロードされている場合は、あなたがnull !== window.jQueryを行うことができますかロードのjQueryのバージョンを見つけるために[?]がJSファイル自体の内部で定義されている任意のオブジェクトまたは名前空間になりjQuery.prototype.jquery

5

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

を検出するために、 。

「含む」という概念はjavascriptにはありません。

+6

たとえば、 'if(typeof($ .fn.modal)=== 'undefined')' – Offirmo

3

私の知る限りでは、短い答えは、Twitterのブートストラップが

詳細

Twitterのブートストラップは、基本的にCSSとjQueryにJSプラグインのセットですがロードされているかどうかを検出することはできません

です。プラグイン名は$ .fn.buttonのように一般的で、使用するプラグインのセットもカスタマイズ可能です。名前だけでプラグインが存在すると、ブートストラップが存在していることを確認できません。

5

はjQueryの安全なモードと互換性が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> 

を参照してください、

CSSのチェックでは、カスタムCSS

16

を使用している場合、私はむしろ、特定のブートストラップをチェックしまうの調整が必要になる場合がありますプラグインはモーダルまたはツールチップが非常に一般的なので、

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

または

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

ブートストラップの両方のバージョンで動作

+0

を参照してください。これは現在のJavaScriptの考え方に沿った最良の答えだと思います全体のフレームワークを探すのではなく、機能サポートに関心を持っています。 – Phil

-3

コンソールでこれを入力すると、それは出力jQueryのバージョンは以下となります。 console.log(jQuery().jquery);

0

を私はこれを行うための最も簡単な方法を見つけますそれ。限り、私はそれを行う簡単な方法があるか分からないCSSとして。

<script>typeof Alert !== 'undefined' || document.write('<script src="/js/bootstrap/bootstrap.min.js">\x3C/script>')</script> 
関連する問題