Prism.js не работает с Rails 4 turbolinks
Я обнаружил, что при использовании подсветки синтаксиса Prism.js в сочетании с подсветкой Turbolinks происходит странно.
Когда я загружаю страницу, которая должна подсветить синтаксис в первый раз, Prism.js не будет запускаться, и ничего не будет выделено. После перезагрузки будет запущена Prism, которая подсвечивает код. Страница останется выделенной после этого, если я не изменю местоположение (перейду в root) и вернусь к нему (после того же сценария)
когда я удаляю Turbolinks из моего файла манифеста (application.js
) все работает нормально (конечно, Turbolinks ничего не делают)
Я не хочу использовать
= link_to "Foo", blogs_path(blog), "data-no-turbolink" => true
потому что я должен был бы использовать это на каждой отдельной ссылке (каждый блог будет выделен какой-то код), поэтому не имеет смысла турболинки вообще
Я пытался использовать такие события, как Turbolings page:change
но я ужасен с чистым JavaScript (Prism.js - чистый JS, а я - jQuery старье)
так кто-нибудь знает, как сказать Turbolinks для запуска подсветки синтаксиса Prism.js?
1 ответ
У меня недавно возникла точно такая же проблема, и решение, которое я нашел, это перезапуск Prism после загрузки страницы. Я использовал страницу Turbolinks: событие загрузки, чтобы вызвать это.
В Coffeescript:
$(document).on 'ready page:load', ->
Prism.highlightAll()
Или в простом JS:
$(document).on('ready page:load', function() {
Prism.highlightAll();
});