2012-07-05 253 views
5

看完這個post(推薦閱讀)關於不使用HTML5Shiv直接從源代碼(幾乎)每個人都這樣做,我試圖包括html5shiv.js我的應用程序使用Rails 3.2資產管道。Rails 3.2資產管道+ html5shiv.JS在供應商/資產/ javascript

我下載了縮小版和未縮小版的javascript。該約定告訴您將第三方文件添加到供應商/資產文件夾中。我現在有兩個問題:

1)我應該在vendor/assets/javascrip文件夾中添加哪個版本(縮小或不縮小)?

2)由於它是一個有條件的參考文獻<!--[if lt IE 9]>,應該如何調用腳本?

我不想將它添加到application.js清單,因爲我想保留它作爲單獨的文件,我想使用該條件。我有點失落!

任何幫助將不勝感激。

感謝

回答

8

您可以使用JS的unminified版本,如果你喜歡,Rails會在生產模式下壓縮它通過管道。

要將shiv保存爲一個單獨的文件,您可以在/vendor/assets/javascripts/目錄中創建一個html5.js(或其他任何文件),爲其指定一個文件。在該文件中需要html5shiv(我假設清單和腳本在相同的目錄中)。

//= require html5shiv 

//= require html5shiv.min 

然後包括在條件塊佈局清單。在HAML中有這樣的東西:

== "<!--[if lt IE 9]>" 
= javascript_include_tag 'html5' 
== "<![endif]-->" 

請記住在測試之前重新啓動您的應用服務器。

+0

我想你說的話,和生成的HTML是這樣的: - 這兩個文件具有相同的內容,如果我試圖訪問比使用?body = 1顯示空白。如果我刪除?body = 1,它們顯示正常。但是,當我嘗試耙資產:預編譯,html5shiv.js不編譯,當我在生產模式下運行服務器時,我得到一個錯誤。我錯過了什麼? – 2012-07-05 14:59:17

+0

我猜我的資產沒有送達。現在一切似乎都奏效了。非常感謝你。 – 2012-07-05 15:26:52

+1

記得在'config/environments/production.rb'中將自定義清單添加到你的預編譯列表中它有指令,但是一個例子:'config.assets.precompile + =%w [html5.js]' – 2012-07-05 15:27:56

1

或者你可以直接使用

/[if lt IE 9] 
    %script{ src: "http://html5shim.googlecode.com/svn/trunk/html5.js", type: "text/javascript" }