0

我制作了一个非常简单直接的书签来测试我们正在开发的开放网络字体。它在 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);
4

2 回答 2

0

FF会在这里抱怨innerText。尝试innerHTML改用

编辑 1

有关它的更多信息 - 选择最适合您的!'innerText' 在 IE 中有效,但在 Firefox 中无效

编辑 2

我一直在为此苦苦挣扎,对我来说没有意义......所以这里有一些可能会产生结果的路线:

  1. 尝试https://dl.dropbox.com/...在样式表中添加字体文件的完整路径(例如 )
  2. 尝试添加两个元素,而不是使用导入:

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);

这些都没有真正为我工作,但可能值得一试。我很困惑的原因是这就是添加 googlefonts 的方式;他们在Firefox中完美运行!

于 2012-08-01T14:03:49.243 回答
0

由于 Firefox 不允许远程调用 @font-face 文件,我通过使用 Base64 编码将字体信息嵌入到 CSS 文件中解决了这个问题。这是 FontSquirrel @font-face 生成器中提供的一个选项,它允许小书签导入字体。这是跨浏览器工作的书签代码:

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
于 2012-08-01T15:21:24.433 回答