Javascript 如何检查Twitter引导是否已加载?
如何检查页面上是否加载了Javascript 如何检查Twitter引导是否已加载?,javascript,twitter-bootstrap,frontend,Javascript,Twitter Bootstrap,Frontend,如何检查页面上是否加载了bootstrap.js文件(该bootstrap.js文件本身可能被编译成另一个大的js文件)?您可以检索元素并检查它们的src属性,但正如您所指出的,您要查找的是代码本身,而不是文件名,因为代码可能位于任何文件中 检测页面中是否加载了JavaScript服务/类/等的最佳方法是在DOM中查找给定JS加载的内容 例如,要检测是否加载了jQuery,可以执行null!==window.jQuery或查找加载的jQuery的版本,jQuery.prototype.jQuer
bootstrap.js
文件(该bootstrap.js
文件本身可能被编译成另一个大的js文件)?您可以检索
元素并检查它们的src属性,但正如您所指出的,您要查找的是代码本身,而不是文件名,因为代码可能位于任何文件中
检测页面中是否加载了JavaScript服务/类/等的最佳方法是在DOM中查找给定JS加载的内容
例如,要检测是否加载了jQuery,可以执行null!==window.jQuery
或查找加载的jQuery的版本,jQuery.prototype.jQuery
if(typeof([?])===“undefined”){/*引导未加载*/}
其中[?]将是JS文件本身内部定义的任何对象或名称空间
javascript中不存在“包括”的概念。好的,简短的回答是
无法检测是否加载了twitter引导
细节
Twitter引导程序本质上是css和jquery的一组js插件。插件名称是通用的,如$.fn.button,要使用的插件集也是可自定义的。仅按名称显示插件无助于确定是否存在引导程序。您只需检查是否存在特定于引导程序的方法即可。在本例中,我将使用modal(适用于引导程序2-4): 它显然不是100%可靠的,因为模态函数可以由不同的插件提供,但它仍然可以完成这项工作 您还可以更具体地检查引导3-4(从3.1+开始工作): 请注意,所有这些检查都需要这样做。请参阅
//
if(typeof($.fn.modal)=='undefined'){document.write('bootstrap.min.css'type='text/css'media='screen'>);
}
其他的
{
//警报(“引导程序已加载”);
}
});
})(jQuery);
// ]]>
与jQuery安全模式兼容
如果您使用自定义css,css检查可能需要调整,我宁愿检查特定的引导插件,因为模式或工具提示非常常见,所以
if(typeof($.fn.popover) != 'undefined'){
// your stuff here
}
或
在两个引导版本中都可以工作如果在控制台中键入此命令,它将输出jQuery版本:
console.log(jQuery().jQuery);
我发现这是最简单的方法。至于css,我不确定有没有简单的方法
<script>typeof Alert !== 'undefined' || document.write('<script src="/js/bootstrap/bootstrap.min.js">\x3C/script>')</script>
typeof警报!='undefined'| | document.write(“\x3C/script>”)
添加引导链接并注意h1标记中的更改。例如if(typeof($.fn.modal)==“undefined”)
谢谢!从cdnjs加载带有本地后备功能的引导非常方便。除了使用。modal
…这个例子中到处都是误报。是的,误报是可能的,这是真的。不幸的是,大多数可能的检查在引导中都有相当一般的名称,所以很难避免这个问题问题,但可能一个更模糊的问题是scrollspy.noConflict。因此,检查scrollspy和noConflict是否都存在可能不太容易出现误报。您还可以将几个不同的检查组合在一起,使其更加可靠。大多数情况下都可以工作,但对包含同名jQuery插件的包感到厌倦。@aron Ied使用此var引导程序_enabled=(typeof$().modal=='function');如何在没有jquery的情况下使用它?我的jquery在检查引导时没有加载,因此它给了我$undefined error。我认为这是最好的答案,符合当前JavaScript关注功能支持而不是寻找整个框架的想法。
<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>
if(typeof($.fn.popover) != 'undefined'){
// your stuff here
}
if (typeof $.fn.popover == 'function') {
// your stuff here
}
<script>typeof Alert !== 'undefined' || document.write('<script src="/js/bootstrap/bootstrap.min.js">\x3C/script>')</script>