2013-02-26 35 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