Я использую Turbolinks 5 с Rails 5 , и я устанавливаю интервал JS для обновления содержимого страницы каждые 10 секунд через AJAX:
<script type="text/javascript">
$(document).ready(function() {
function fetchContent() {
// some AJAX request
}
setInterval(fetchContent, 10000);
});
</script>
Когда я впервые загружаю страницу, содержащую вышеуказанный код, он работает: fetchContent
запускается каждые 10 секунд.
Однако, когда я перехожу на другую страницу, fetchContent
продолжает срабатывать.Более того, когда я возвращаюсь на страницу (используя кнопку возврата браузера), fetchContent
срабатывает непредсказуемо несколько раз.Очевидно, что это нежелательное поведение.
Как это исправить?
Примечание : Чтобы это исправить, я знаю, что мне может понадобиться clearInterval
вызов какой-то, но как мне сделать это с помощью Turbolinks 5, например, какое событие я должен связать?Начиная с Turbolinks 5, API изменился .В частности, все события Turbolinks Classic были переименованы, а некоторые, включая page:update
, были удалены, поэтому я не могу использовать такие решения, как this , this или это .