8 ответов:
все, что вам нужно сделать, это просто проверить, доступен ли метод Bootstrap-specific. Я буду использовать модальный в этом примере (работает для 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 уже загружено.
Я бы предпочел проверить конкретный плагин bootstrap, так как модальные или всплывающие подсказки очень распространены, поэтому
if(typeof($.fn.popover) != 'undefined'){ // your stuff here }или
if (typeof $.fn.popover == 'function') { // your stuff here }работает в обеих версиях bootstrap
if (typeof([?])=='undefined') { /*bootstrap is not loaded */}где [?] был бы любой объект или пространство имен, которое определено внутри самого файла JS.
понятие "включение" не существует в javascript.
см.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
АФАИК, короткий ответ
Это не возможно, чтобы определить, является ли Twitter начальной загрузки загружается
подробности
Twitter bootstrap-это, по сути, css и набор плагинов js для jquery. Имена плагинов являются общими, как $.сноска.кнопка и набор плагинов для использования также настраиваются. Наличие плагина просто по имени не помогло бы установить, что bootstrap присутствует.
вы можете забрать
<script>элементы и проверьте их атрибут src, но, как вы указали, то, что вы ищете, - это сам код, а не имя файла, поскольку код может быть в любом файле.лучший способ определить, если JavaScript service / class / etc. загружается на странице, чтобы искать что-то в DOM, что вы знаете, загружается данным JS.
например, чтобы определить, загружен ли jQuery, вы можете сделать
null !== window.jQueryили узнать версию загруженного jQuery,jQuery.prototype.jquery
Я считаю, это самый простой способ сделать это. Насколько в CSS я не уверен, что есть простой способ сделать это.
<script>typeof Alert !== 'undefined' || document.write('<script src="/js/bootstrap/bootstrap.min.js">\x3C/script>')</script>
Comments