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();
});
Другие вопросы по тегам