Turbolinks verhindern, dass normale $(document).ready()
Ereignisse bei allen Seitenbesuchen außer dem anfänglichen Laden ausgelöst werden, wie hier und hier erläutert . Keine der Lösungen in den verknüpften Antworten funktioniert jedoch mit Rails 5. Wie kann ich bei jedem Seitenbesuch Code ausführen, wie in früheren Versionen?
83
on('ready turbolinks:load')
ansonsten einige Probleme auf einigen SeitenNative JS:
quelle
In Schienen 5 ist die einfachste Lösung:
Anstelle von
$(document).ready
. Klappt wunderbar.quelle
ready
zur Liste hinzufügen , sonst wird die Funktion zweimal ausgeführt. Wie github.com/turbolinks/turbolinks/#observing-navigation-events sagte, sollten Sie es so machen:javascript $(document).ready(function() { $(document).on('turbolinks:load', function() {} ) })
$(document).ready
ausgelöst wird, dann würde ich zumindest in meinen eigenen Szenarien nicht brauchenturbolinks:load
ready
Ereignis ausgelöst. Wenn es Turbolinks gibt, wird der Code zweimal aufgerufenDies ist meine Lösung, überschreiben
jQuery.fn.ready
und$(document).ready
funktioniert dann ohne Änderung:quelle
document
Rückrufen basieren. Warum das Downvote? Dies sollte sicher sein, solange Turbolinks während der gesamten Anwendung verwendet werden, oder?(Für Coffeescript)
Ich benutze:
$(document).on 'turbolinks:load', ->
Anstatt:
$(document).on('turbolinks:load', function() {...})
quelle
Hier ist eine Lösung, die für mich funktioniert, von hier aus :
Installieren
gem 'jquery-turbolinks'
Fügen Sie diese .coffee-Datei zu Ihrer App hinzu: https://github.com/turbolinks/turbolinks/blob/master/src/turbolinks/compatibility.coffee
Nennen Sie es turbolinks-compatibility.coffee
bei application.js
quelle
production
env? Hast du es ausprobiert? Es gibt einige Leute, die sagen, dass es imdevelopment
Modus gut funktioniert .Während wir auf die Lösung dieses wirklich coolen Edelsteins warten, konnte ich vorwärts gehen, indem ich Folgendes modifizierte:
zu:
Ich bin mir noch nicht bewusst, was dies nicht löst, aber es schien bei der Erstinspektion gut zu funktionieren.
quelle
Verwenden Sie die leichten Edelstein- JQuery-Turbolinks .
Es macht
$(document).ready()
mit Turbolinks arbeiten, ohne den vorhandenen Code zu ändern.Alternativ können Sie
$(document).ready()
zu einem der folgenden Elemente wechseln :je nachdem, welches in Ihrer Situation besser geeignet ist.
quelle