在Chrome中无法正确读取font-family

时间:2014-07-19 14:25:00

标签: javascript jquery css google-chrome

我在这里有一个jsfiddle - http://jsfiddle.net/qYR6U/8/ - 我用jQuery设置font-family并用jQuery读回来。如果我设置的font-family是“Arial ...”。它回来没关系,只需一套双引号。但如果我设置的font-family是“漫画......”它在一组单引号中包含的一组双引号中返回。

这只适用于Chrome。有谁知道发生了什么事?

$('#box').css('font-family', 'Arial,Helvetica,sans-serif');
var fontFamily1 = $('#box').css('font-family');
console.log(fontFamily1);

$('#box').css('font-family', 'Comic Sans MS');
var fontFamily2 = $('#box').css('font-family');
console.log(fontFamily2);
debugger;

感谢。

2 个答案:

答案 0 :(得分:2)

这是因为当字体名称包含空格时,浏览器会将需要引用的任何字符串解释为需要引号,因此会添加引号(这适合浏览器执行)。为什么只有当Chrome的属性被回读时,Chrome才会显示(正常)引用,你得到了我。

尝试Times New Roman,你会得到相同的带引号的字符串。

来自W3

  

为避免转义错误,建议引用包含除连字符以外的空格,数字或标点字符的字体系列名称:

body { font-family: "New Century Schoolbook", serif }

<BODY STYLE="font-family: '21st Century', fantasy">

答案 1 :(得分:1)

您正在为JS函数参数使用单引号。要将font-family设置为具有多个单词的字体,您也应该将名称括在引号中。

因此,不要在代码中使用'Comic Sans MS',请尝试使用'"Comic Sans MS"'。 (单引号和双引号)。 我相信Arial有效,因为这只是一个字。

编辑:我可能会误解。 如果问题是您在字符串周围有引号而不想引用引号,则只需要通过字符串操作删除它们。