2010-10-16 84 views
0

我正在写一个JavaScript注入,以显示在自定义CSS字体一些文本(一些更换后)新的CSS规则到Android浏览器页面。注入CSS规则到页面中Android浏览器

这里是我试图注入CSS规则:

var css = '@font-face {font-family:"font"; src:url(http://www.example.com/font.ttf);} si{font-family:"font"}'; 
if(document.getElementsByTagName("style")[0]){ 
    var style = document.getElementsByTagName("style")[0]; 
} else { 
    var style = document.createElement("style"); 
    style.type = "text/css"; 
    document.getElementsByTagName("HEAD")[0].appendChild(style); 
} 
var sheet = style.sheet; 
sheet.insertRule(css, sheet.cssRules.length); 

然后将文本使用JavaScript XPath实现替换。更换线在此模型:

text = text.replace(/\'/g, "<si>♥</si>"); 

的文本替换发生完美。但注入CSS规则部分不起作用。被替换的文本仅显示为<si>♥</si>(标签也打印出来)。 :(

谁能请纠正我注射CSS规则的代码或请建议一些其他的方式来做到这一点

感谢

更新:!我在Android 2.2的模拟这种支持CSS字体。

回答

1

@字体面似乎在Android 2.0和2.1(bug tracker)被打破。

+0

是,Android的2.0和2.1不支持CSS的字体。但我在Android 2.2的其中支承实仿效此ts CSS字体。因此,我应该能够以某种方式做到这一点。 – Dhanika 2010-10-16 15:34:15

+0

我没有安装2.2 SDK,但如果我在Chromium中测试您的示例,它也不起作用。但是,如果我将css分成两个变量,每个规则一个(var css1 ='@ font-face {...}'; var css2 ='si {...}';)。似乎您可以使用insertRule一次仅插入一条规则。 – Daniel 2010-10-16 16:52:58