[JAVA] [Rails 5] [Turbolinks] Was tun, wenn JS aufgrund eines Seitenübergangs oder eines Browsers nicht funktioniert?

Implementierte Funktion

Entwicklungsumgebung

ruby > 2.6.5
rails > 5.2.4.2

JS implementiert

$(document).ready(function(){
   $("#menu").on("click", function() {
      $(this).next().slideToggle();
   });
});

Mit jquery habe ich ein gewöhnliches Hamburger-Menü zum Öffnen und Schließen hinzugefügt. Abgesehen von den guten und schlechten Eigenschaften des JS-Codes sollte es im Betrieb kein Problem geben.

Status

Es funktioniert zum Zeitpunkt des ersten Ladens einwandfrei. Das Verhalten ist zum Zeitpunkt des Seitenübergangs und des Zurücks des Browsers seltsam. Es entzündet sich mit einem Klick, öffnet und schließt sich jedoch und ist instabil. Es funktioniert normal, wenn es neu geladen wird.

Rücksichtnahme und Gegenmaßnahmen

Es funktioniert, also ist vielleicht der Ladezeitpunkt falsch? → Sie können nicht einmal alles wie ready`` onload`` ajaxStop ausprobieren.

Nach Rücksprache mit Herrn Google habe ich eine solche Beschreibung gefunden

$(document).on('turbolinks:load', function () {
...
});

turbolinks: load Ich habe das noch nie gesehen ... Anscheinend ist es eine Rails-spezifische Beschreibung.

Umgang mit Turbolinks

Ich habe auf diesen Artikel verwiesen. Turbolinks-Spickzettel

Was sind Turbolinks?

Mit anderen Worten, diese Funktion scheint diesmal JS beeinflusst zu haben.

Umgang mit Turbolinks

Da es sich um einen Edelstein handelt, kann er durch Löschen gelöst werden, wird jedoch nicht gelöst. Ich habe nachgeforscht, wie ich damit umgehen soll.

Dies ist die Hauptbehandlung.

  1. Deaktivieren Sie Turbolinks für jedes \ -Tag
  2. Deaktivieren (löschen) Sie die Turbolinks selbst
  3. Wenden Sie beim Laden von JS keine Turbolinks an, sondern ändern Sie das Timing

1. Deaktivieren Sie Turbolinks für jedes \ -Tag

Wenn Sie im Link selbst "{" turbolinks "=> false}" angeben Für diesen Link sind Turbolinks deaktiviert.

<%= link_to "HOGE", root_path, data: {"turbolinks" => false} %>
<%# => <a data-turbolinks="false" href="/">HOGE</a> %>

Wenn Sie dies schreiben, können Sie Turbolinks definitiv entfernen. Es scheint gut zu sein, wenn Sie nur ein bestimmtes Skript steuern, aber es scheint schwierig zu sein, alles zu beschreiben ...

2. Deaktivieren (löschen) Sie die Turbolinks selbst

Edelstein entfernen

Löschen Sie diese Zeile

Gemfile


#gem 'turbolinks', '~> 5'

Terminal


$ bundle update

Bearbeiten Sie application.js

app/assets/javascripts/application.js


//= require turbolinks #Löschen Sie diese Zeile

erb:app/views/layouts/application.html.erb


<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
<%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>

"Data-Turbolinks-Track": Entfernen Sie "Nachladen". Es wurde jetzt deaktiviert. Es kann sicher sein, dass es deaktiviert wird, es sei denn, es handelt sich um eine Site, die JS stark nutzt. 3. Passen Sie die Turbolinks nicht an das JS-Laden an. Wie bei ready`` onload usw. können Sie mit dieser Beschreibung laden, ohne die Turbolinks anzupassen.

$(document).on('turbolinks:load', function () {
...
});

Darüber hinaus können Sie den Zeitpunkt für das Anbringen von Turbolinks ändern. Wenn Sie mehr wissen möchten, klicken Sie bitte hier. [Nehmen Sie andere Lebenszyklusereignisse auf](https://qiita.com/morrr/items/54f4be21032a45fd4fe9#%E3%81%9D%E3%81%AE%E4%BB%96%E3%81%AE%E3 % 83% A9% E3% 82% A4% E3% 83% 95% E3% 82% B5% E3% 82% A4% E3% 82% AF% E3% 83% AB% E3% 82% A4% E3% 83 % 99% E3% 83% B3% E3% 83% 88% E3% 82% 92% E3% 81% A8% E3% 82% 8B "Nehmen Sie andere Lebenszyklusereignisse")

Ich denke, dies ist diesmal die beste Lösung, da die Feinabstimmung für jedes Skript funktioniert.

Zusammenfassung

Ist Turbolinks eine großartige Funktion oder eine laute Funktion ... Ich kann es auch nicht sagen, lol Ich bin sicher, dass es standardmäßig installiert werden sollte, aber ... Wenn Sie wissen, wie Sie es effektiver einsetzen können, hinterlassen Sie bitte einen Kommentar!

Recommended Posts

[Rails 5] [Turbolinks] Was tun, wenn JS aufgrund eines Seitenübergangs oder eines Browsers nicht funktioniert?
[Schienen] Was tun, wenn Schienen nicht reagieren oder nicht anhalten?
Was zu überprüfen ist, wenn Schienen db: Migration nicht bestanden
Was tun beim Debuggen von "Quelle nicht gefunden"?
[Grails] Beim Ausführen ist ein Fehler aufgetreten. Was ist zu tun, wenn die Grails-CLI nicht gestartet wird?
Was zu tun ist, wenn es ungültig ist, weil es nicht mit einem '-' beginnt
Was tun, wenn das Update nach der Bereitstellung von Rails AWS nicht wirksam wird?
Was tun, wenn die Routing-Einstellungen nach dem Erstellen einer Docker-Umgebung mit Laravel nicht funktionieren?
Was tun, wenn die Annotation JSON Hint nicht mit Lombok und JSONIC funktioniert?
Bluemix Infrastructure VPN stellt keine Verbindung her, da NPAPI nicht unterstützt wird! Was tun, wenn [Mac]
[Ruby on Rails] Wenn die ID-Erfassung des Parameters nicht gut lief
Was tun, wenn die Methode in f: ajax nicht gefunden wurde?
Was tun, wenn "Relation" hibernate_sequence "nicht existiert" in der ID-Spalte von PostgreSQL + JPA
Was tun, wenn die App nicht mit der neuesten Rails-Version erstellt wurde, die bei neuen Rails installiert wurde?
[Rails] Was tun, wenn keine Daten in der Datenbank registriert sind?
Was tun, wenn die Änderungen im Servlet nicht berücksichtigt werden?
Feder sollte vermutet werden, wenn Rails-Befehle nicht richtig funktionieren
Was tun, wenn die Rails-Seite im Rails-Lernprogramm 1.3.2 nicht angezeigt wird?
java.security.InvalidKeyException: Was ist zu tun, wenn die Schlüsselgröße oder die Standardparameter unzulässig sind?
Was tun, wenn eine javax.batch.operations.JobStartException auftritt?
Was tun, wenn blockierter Host: "Hostname" in Ruby on Rails angezeigt wird
Simulator funktioniert nicht: Gerät kann aufgrund unzureichender Systemressourcen nicht gestartet werden
Was ist zu tun, wenn auf den Schienen cHoge.connection aufruft, um eine Verbindung herzustellen? C.
[Schienen] Was tun, wenn das Refile-Bild beim Schreiben der Verarbeitung zum Zeitpunkt des Routing-Fehlers nicht angezeigt wird?
Was tun, wenn eine javax.el.PropertyNotWritableException auftritt?
[Rails] [Hinweis] Wann = zu <%%> hinzugefügt werden soll und wann nicht
undefinierte Methode Was tun, wenn Sie "user_signed_in" erhalten?
Was tun, wenn Sie Gemfile oder .bundle / directory nicht finden konnten?
In Java-TeraPad ab Anfänger geschriebener Code funktioniert aufgrund eines Fehlers nicht
Was tun, wenn die ffi-Installation beim Starten einer Anwendung in Rails fehlschlägt?
[Ubuntu] Was tun, wenn MongoDB aufgrund eines SocketException-Fehlers nicht gestartet werden kann?
Was ist zu tun, wenn in einer der Quellen in der Entwicklungsumgebung mit Docker × Rails × RSpec "Nicht gefunden" angezeigt wird?
Was tun, wenn die Fehlermeldung "JavaScript-Laufzeit konnte nicht gefunden werden" angezeigt wird? Beim Starten des Rails-Servers