2014-01-22 20 views
5

Ich entdeckte, dass, wenn ich Prism.js Syntax highlitting in Kombination mit Turbolinks Hervorhebung seltsam verwendet.Prism.js arbeitet nicht mit Rails 4 Turbolinks

Wenn ich eine Seite lade, die zum ersten Mal eine Syntax hervorheben sollte, wird Prism.js nicht ausgelöst und nichts ist markiert. Nach dem erneuten Laden derselben Seite wird Prism aktiviert und der Code hervorgehoben. Die Seite wird danach hervorgehoben, wenn ich den Ort nicht ändere (gehe zum root) und zurück zu demselben (Szenario)

wenn ich Turbolinks aus meiner Manifest-Datei entferne (application.js) funktioniert alles gut (natürlich Turbolinks aren ‚t etwas zu tun)

ich will nicht

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

verwenden, weil ich, dass auf jedem einzelnen Link verwenden muß (jedes Blog wird ein Code highlited) hat daher keinen Sinn, von turbolinks bei alle

Ich habe versucht, Turbolings events wie page:change zu verwenden, aber ich bin schrecklich mit reinem JavaScript (Prism.js ist reine JS & Ich bin jQuery junky)

so jemand wissen, wie Turbolinks sagen Prism.js Syntax highliting auslösen?

Antwort

13

Ich hatte dieses exakt gleiche Problem vor kurzem, und die Fehlerbehebung, die ich gefunden habe, ist Prism nach dem Laden der Seite neu zu starten. Ich habe die Turbolinks-Seite benutzt: load event um das auszulösen.

In Coffee:

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

Oder im Klar JS:

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

Ehrfürchtig es funktioniert :) Danke – equivalent8