加载font真棒的后备计划
Fallback plan for loading fontawesome
更新:为了让我的问题更清楚,我引用了以下代码片段并实现了类似的东西-
<script type="text/javascript" src="http://ajax.microsoft.com/ajax/jquery/jquery-1.4.2.min.js"></script>
<script type="text/javascript">
if (typeof jQuery == 'undefined') {
document.write(unescape("%3Cscript src='/js/jquery-1.4.2.min.js' type='text/javascript'%3E%3C/script%3E"));
}
</script>
我正在以这种方式加载font-awesome.css
和JSP
中的回退-
<link type="text/css" rel="stylesheet" href="//netdna.bootstrapcdn.com/font-awesome/3.1.1/css/font-awesome.min.css" />
<script>
function fallbackForFontAwesome() {
if (typeof bootstrapcdn == "undefined") {
document.write(unescape('%3Clink type="text/css" rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/font-awesome/3.1.1/css/font-awesome.min.css" /%3E'));
if (typeof cloudflare == "undefined") {
document.write(unescape('%3Clink type="text/css" rel="stylesheet" href="/common/fontawesome/css/font-awesome.min.css" /%3E'));
} else {
alert('loading from cloudfare');
}
} else {
alert('loading from bootstrap cdn');
}
}
fallbackForFontAwesome();
</script>
根据这个代码片段,我预计alert('loading from bootstrap cdn');
的执行会发生。但事实并非如此。代码if (typeof bootstrapcdn == "undefined")
和if (typeof cloudflare == "undefined")
是否检查css是否已从相应的URL加载?我是不是哪里出错了?
您可以通过创建一个使用FontAwesome的"fa"类的span,然后测试其字体来测试FontAwesome是否已加载。然后删除跨度并返回结果。
function isFontAwesomeLoaded() {
var span = document.createElement('span');
span.className = 'fa';
document.body.appendChild(span);
var result = (span.style.fontFamily === 'FontAwesome');
document.body.removeChild(span);
return result;
}
此函数将为您提供一个true或false的结果,因此如果为false,您可以使用加载本地回退(document.write等)。
您的javascript变量未定义
您的代码有些错误(在两个语句的末尾使用)
document.write(unescape('%3Clink type="text/css" rel="stylesheet" href="/common/fontawesome/css/font-awesome.min.css" /%3E'));
现在,如果它进入第一个if语句,它也应该工作,u必须这样写代码,否则它将不会进入其他
function fallbackForFontAwesome() {
if (typeof bootstrapcdn == "undefined") {
document.write(unescape('%3Clink type="text/css" rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/font-awesome/3.1.1/css/font-awesome.min.css" /%3E'));
if (typeof cloudflare == "undefined") {
document.write(unescape('%3Clink type="text/css" rel="stylesheet" href="/common/fontawesome/css/font-awesome.min.css" /%3E'));
}
else {
alert('loading from cloudflare cdn');
}
} else {
alert('loading from bootstrap cdn');
}
}
fallbackForFontAwesome();
创建一个函数,将<span>
添加到正文中,以检查FontAwesome
字体类型是否已加载(通过CDN)。
window.onload = function () {
var span = document.createElement('span'),
headHTML = document.head.innerHTML;
span.className = 'fa';
span.style.display = 'none';
document.body.insertBefore(span, document.body.firstChild);
//if 'FontAwesome' didn't load, add a local fallback link to the head
if (span.style.fontFamily !== 'FontAwesome') {
headHTML += '<link rel="stylesheet" href="path/to/local/fallback.css">';
document.head.innerHTML = headHTML;
}
document.body.removeChild(span);
};
相关文章:
- 如何知道字体(@font face)是否已经加载
- 输入值由于输入font size=“”而返回空字符串;0〃;
- 计划的电子邮件
- 在Stylus css中循环@font face
- 节点计划不适用于特定日期发送规则
- Cufon-builder-font-js文件在Fabric.js中不起作用
- 有没有计划在CSS中启用JavaScript
- 在 parse.com 中保存对象后计划后台作业
- 将计划插件留给 orangehrm
- 如何使用jQuery计算和显示font-awesome的评级
- 欧拉计划编号 8
- 在bookmarklet中使用@import和@font face(适用于Chrome,但不适用于Firefox)
- 计划每60秒运行一次代码
- MEANIO群集(共4个)对于计划作业仅运行一次
- 使用SVG和jQuery可缩放和可点击的座位计划
- 计划任务为chrome扩展
- 如何在onclick中添加font真棒微调器
- 是否可以通过javascript将@font face html实体输入到输入中
- 如何从 DOS 批处理脚本或计划运行 imacros .js
- 加载font真棒的后备计划