2013-02-26 62 views
0

我完全是在Modernzr内使用Yep Nope并且有一些困难。是的,但有条件地加载谷歌网页字体

我不知道语法是什么所有我做到以下几点:

  • 使用是的没了检查web字体支持
  • 如果是这样,URL字符串追加到的头文件加载远程css文件。

类似的东西不工作 - 或者我在这里咆哮错误的树?

yepnope({ 
    test : Modernizr.fontface 
    yep : [ 
     $('<link href=\'http://fonts.googleapis.com/css?family=Bitter:400,700|Oswald:300,400,700\' rel=\'stylesheet\' type=\'text/css\'>').appendTo($('head')); 
    ] 
}); 

在此先感谢

回答

4

我希望你已经想通了这一点,但如果你没有:

你试图运行JS语句,在项目阵列。这在我所知的任何JS环境中都不起作用。第一步我想是删除了jQuery调用,并指定原始URL的CSS,而不是像这样:

yepnope({ 
    test: Modernizr.fontface, 
    yep: [ 
     'http://fonts.googleapis.com/css?family=Bitter:400,700|Oswald:300,400,700' 
    ] 
}); 

这将加载样式表,但由于YepNope认为这是一个JS文件抛出一个错误。对此的解决方案是包含YepNope CSS前缀插件(您可以在Github repo here中找到它)。然后,你可以这样做:

yepnope({ 
    test: Modernizr.fontface, 
    yep: [ 
     'css!//fonts.googleapis.com/css?family=Bitter:400,700|Oswald:300,400,700' 
    ] 
}); 

我测试过,和它的伟大工程。

您也可以使用此方法Modernizr.load(如果你使用的Modernizr的定制)。您只需在包含Modernizr后添加任何YepNope插件即可。将相应的调用委托给YepNope足够聪明。

作为附带说明,请注意我除去的“http:”,从第二码块。这被称为“协议相对URL”。它允许根据您当前的协议进行加载。这意味着它会载入“HTTP://fonts.googleapis ......”如果你在一个不安全的域,并加载“HTTPS://fonts.googleapis ......”如果在一个安全域。

+0

嗨,那么,我该如何/到底在哪里为yepnope添加css插件?我正在使用现在是yepnope的Modernizr。 – mathalete 2013-07-11 10:54:08

+0

Modernizr的不包括YepNope默认,但既然你已经有了一个构建,包括它,你可以只包括CSS插件,你有Modernir后,像这样: '' Modernizr足够聪明,可以将所有yepnope调用委托给YepNope本身,让您可以毫不费力地使用任何这些插件。 对不起,真的很长的延迟(DNS问题,我无法登录)。 – 2013-07-24 17:24:52

+0

这是否解决了你的问题? – 2013-08-06 14:29:06