在bookmarklet中使用@import和@font face(适用于Chrome,但不适用于Firefox)
Using @import and @font-face in a bookmarklet (works in Chrome, but not in Firefox)
我制作了一个非常简单的直接bookmarklet来测试我们正在开发的开放式web字体。它在Chrome中很有魅力,但在Firefox中失败了,关于如何让它跨浏览器工作的任何提示(我是一个真正的JS新手,主要是复制粘贴,然后祈祷它能工作)。这是代码:
javascript:var%20addFont%3Ddocument.createElement(%22style%22)%3BaddFont.innerText%3D%22%40import%20url(%27https://dl.dropbox.com/u/16808833/webfontkit-20120729-105013/stylesheet.css%27)%3B%20*%7Bfont-family:%20%27OpenfontRegular%27!important%3Bfont-weight:%20normal!important%3B%7D%22%3Bdocument.body.appendChild(addFont)%3B
或者以更可读的格式:
javascript:
var addFont=document.createElement('style');
addFont.innerText="
@import url('https://dl.dropbox.com/u/16808833/webfontkit-20120729-105013/stylesheet.css');
*{
font-family: 'OpenfontRegular'!important;
font-weight: normal!important;
}";
document.body.appendChild(addFont);
FF将在此处投诉innerText
。尝试使用innerHTML
代替
编辑1
关于它的更多信息-选择最适合你的';innerText';适用于IE,但不适用于Firefox
编辑2
我一直在挣扎,这对我来说毫无意义。。。因此,以下是一些可能产生结果的更多路线:
- 尝试在样式表中添加字体文件(例如
https://dl.dropbox.com/...
)的完整路径 - 不要使用import,而是尝试添加两个元素,如下所示:
var addLink = document.createElement('link');
addLink.rel = "stylesheet";
addLink.type = "text/css";
addLink.href = "https://dl.dropbox.com/u/16808833/webfontkit-20120729-105013/stylesheet.css";
document.head.appendChild(addLink);
var addFont=document.createElement('style');
addFont.innerHTML="* { font-family: 'OpenfontRegular' !important; font-weight: normal!important; }";
document.body.appendChild(addFont);
这两种方法实际上都不适用于我,但可能值得一试。我之所以如此困惑,是因为这就是谷歌字体的添加方式;它们在firefox中完美工作!
由于Firefox不允许远程调用@font face文件,我通过使用Base64 Encode将字体信息嵌入CSS文件来解决这个问题。这是FontSquirrel@font face生成器中提供的一个选项,它允许bookmarklet导入字体。以下是跨浏览器工作的bookmarklet代码:
javascript:%20newSS%20=%20document.createElement('link');%20newSS.rel%20=%20'stylesheet';%20newSS.href%20=%20'http://dl.dropbox.com/u/2040562/beta0.1/bookmarklet.css';%20document.head.appendChild(newSS);%20void%200
或:
javascript:
newSS = document.createElement('link');
newSS.rel = 'stylesheet'; newSS.href = 'http://dl.dropbox.com/u/2040562/beta0.1/bookmarklet.css';
document.head.appendChild(newSS);
void 0
相关文章:
- JQueryhide()不适用于Mozzilla,但适用于Chrome
- Regex不适用于Firefox,但适用于Chrome
- 关闭当前选项卡并打开一个新的-仅适用于Chrome
- 向下滚动时隐藏菜单,向上滚动时显示,适用于Chrome,不适用于Safari(手机)
- Mozilla并没有完美地执行这段代码,尽管它适用于Chrome和IE
- Angularjs ng-options 问题仅适用于 Chrome 浏览器
- 支持 JavaScript 的检查例程适用于 Chrome/Opera/IE,但不适用于 Firefox/Safari
- javascript单选按钮验证,适用于chrome,不适用于IE
- getElementsByTagName未保存(仅适用于chrome)
- 在bookmarklet中使用@import和@font face(适用于Chrome,但不适用于Firefox)
- Ajax成功回调仅适用于Chrome
- ScrollTop适用于Chrome和Edge,但不适用于Firefox
- jQuery适用于Chrome、Firefox、IE,但不适用于iPhone
- minlength仅适用于Chrome
- 自动完成功能适用于Chrome,但不适用于IE
- Javascript仅适用于Chrome
- formatDate JavaScript 函数仅适用于 Chrome
- Javascript String to Date适用于Chrome,而不是FF或Safari
- 文件上传代码适用于Chrome和Mozilla,但不适用于IE 8,9
- 地理编码器仅适用于chrome,不适用于Firefox / IE / android