2013-06-10 9 views
14

No cóż, jak mówi tytuł mniej więcej. Używam gem Turbolinks w mojej aplikacji Rails i mam problem z przyciskiem "wstecz przeglądarki". Moje javascripts działa dobrze, dopóki nie kliknę w przeglądarce, a następnie przestanie działać. Jeśli kliknę link w mojej aplikacji lub ponownie załaduję stronę, zacznie działać ponownie.Kliknięcie "wstecz" w przeglądarce wyłącza mój kod javascript, jeśli używam Turbolinks w Railsach

Pomysły na mrówki, jak to naprawić?

Odpowiedz

23

dwa rozwiązania Turbolinks Classic:

ustawiona na 0 cache tak, że żadne strony są buforowane przy użyciu HTML5 historię.

Turbolinks.pagesCached(0); 

Innym rozwiązaniem jest słuchanie zdarzenia "page: restore" i wywoływanie metody inicjalizacji. To ostatnie rozwiązanie jest bardziej wydajne.

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

Dostałem dół głosów w tej sprawie. Czy to się zmieniło w nowszych wersjach? –

+3

Witam, nie spadłem, ale jak widać [tutaj] (https://github.com/turbolinks/turbolinks/issues/135) 'page: restore' nie uruchamia już Turbolinks 5. Ponadto,' Turbolinks .pagesCached(); 'wydaje się być martwy, myślę, że prawdopodobnie istnieje tylko w Turbolinks Classic, nie Turbolinks 5 ... – stephenmurdoch

+0

ani pomóc teraz –

19

jquery-turbolinks gem nie obsługuje Turbolinks 5 już tak, że rozwiązanie jest przestarzałe teraz.

Jeśli chcesz wyłączyć buforowanie turbolinków, po prostu dodaj tę metę do swojej strony;

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

Możesz znaleźć odpowiedź w następnym turbolinks issue discussion. Dla mnie następne rozwiązanie działało - usunięcie elementu zainicjowany przez JS (w moim przypadku) używając wybranej listy rozwijanej obok:

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