2014-01-22 96 views
5

我發現,當我使用Prism.js語法highliting與Turbolinks組合突出顯示行爲奇怪。Prism.js不能使用Rails 4 turbolinks

當我加載一個應該首次突出顯示語法的頁面時,Prism.js不會被觸發,也不會突出顯示任何內容。在重新加載相同的頁面之後,Prism將會踢入並高亮顯示代碼。頁面將保持突出顯示,除非我更改位置(轉到根目錄)並返回到它(在同一場景之後)

當我從清單文件(application.js)中移除Turbolinks時,一切正常(當然,Turbolinks aren 「T做什麼)

我不想使用

= link_to "Foo", blogs_path(blog), "data-no-turbolink" => true 

,因爲我將不得不使用,每一個環節上(每個博客都會有一些代碼白標明的),因此沒有在點turbolinks的全部

我試圖用Turbolings eventspage:change但我不善於用純JavaScript(Prism.js是純JS &我的jQuery毫無價值)

所以任何人都知道如何告訴Turbolinks觸發Prism.js語法highliting?

回答

13

我最近有這個完全相同的問題,我發現的修復是在頁面加載後重新運行Prism。我使用Turbolinks頁面:加載事件來觸發它。

在CoffeeScript的:

$(document).on 'ready page:load', -> 
    Prism.highlightAll() 

或者純JS:

$(document).on('ready page:load', function() { 
    Prism.highlightAll(); 
}); 
+0

真棒工程:)謝謝 – equivalent8