2016-09-06 21 views
5

Używam Turbolinks 2.5.3 i mam tag skryptu na dole strony głównej.Turbolinks ładuje Javascript wiele razy

<script> 
    $(document).ready(function() { 
    alert('hello'); 
    }); 
</script> 

dla każdej strony w witrynie, biegnę następujące JS:

Turbolinks.pagesCached(0); 

Gdybym odwiedzić stronę główną, alert pojawia się tylko raz. Jeśli naciśniesz przycisk Wstecz, a następnie przycisk Dalej w mojej przeglądarce, załaduje się strona główna, a teraz pojawią się dwa powiadomienia. Jeśli powtórzę ten proces ponownie, pojawią się trzy alerty.

Oto moje pytanie:

Dlaczego Turbolinks buforowanie strony, kiedy wyraźnie powiedział, że nie. Czy ma to związek z Turbolinks przekształcającym detektor zdarzeń gotowych do pracy z dokumentem? Jak mogę to naprawić, aby ładować tylko raz za każdym razem?

+0

Dlaczego używasz 'pagesCached (0) 'on każda strona? –

Odpowiedz

1

Spróbuj coś takiego

<script> 
    $(document).ready(function() { 
    if (alert('hello')) { 
    } 
    else { 
    alert('hello'); 
    } 
    }); 
</script> 
+0

To nie jest możliwe rozwiązanie, ponieważ 'alert ('hello')' faktycznie nie jest używany w moim kodzie. Dodałem go ze względu na prostotę. – jason328

1

użycie turbolinks:load

<script> 
    $(document).on('turbolinks:load',function() { 
    alert('hello'); 
    }); 
</script> 
+0

Niestety, alert nie pojawia się w ogóle przy użyciu tego kodu. – jason328

+0

To jest dokładne dla turbolinks 5, ale nie dla 2.5.3 –