Щелчок "назад" в браузере отключает мой код javascript, если я использую Turbolinks в Rails - программирование
Подтвердить что ты не робот

Щелчок "назад" в браузере отключает мой код javascript, если я использую Turbolinks в Rails

Ну, как говорится в названии более или менее. Я использую gem Turbolinks в моем приложении Rails, и у меня проблема с кнопкой "браузер назад". Мои javascripts отлично работают, пока я не вернусь в свой браузер, а затем перестанет работать. Если я нажму ссылку в своем приложении или перезагрузите страницу, она снова начнет работать.

Ant идеи, как это исправить?

4b9b3361

Ответ 1

jquery-turbolinks не поддерживает Turbolinks 5, так что решение устарело Теперь.

Если вы хотите отключить кэширование turbolinks, просто добавьте эту мета на свою страницу;

<meta name="turbolinks-cache-control" content="no-cache">

Ответ 2

Два решения для Turbolinks Classic:

Установите кеш в 0, чтобы страницы не кэшировались с использованием истории HTML5.

Turbolinks.pagesCached(0);

Другим решением является прослушивание события "страница: восстановление" и вызов метода инициализации. Это последнее решение более эффективно.

document.addEventListener("page:restore", function() {
  app.init();
});

Ответ 3

Вы можете найти ответ в следующем обсуждении проблемы turbolinks. Для меня сработало следующее решение - удалить элемент, инициализированный JS (в моем случае выбрал выпадающий список), используя следующее:

document.addEventListener("turbolinks:before-cache", function() {
    $('.chosen-select').chosen('destroy');
})

Ответ 4

Вместо того, чтобы полностью отключить turbolinks-caching во всем приложении (делая интеграцию turbolinks совершенно бесполезной), как подробно описано в предыдущих ответах, вы можете просто отключить турболинки только для тех частей страницы, которые доставляют вам проблемы с JS

<div id="div_using_JS_functions" data-turbolinks='false'>
 .
 .
 .
</div>