[JAVA] Ich hatte das Problem, dass JS nach dem Seitenübergang nicht gelesen wird und JS beim Laden gelesen wird.

Status

Dies ist ein Fehler, den ich bei der Entwicklung einer Flima-App mit Rails festgestellt habe. Während der Implementierung der Produktlistenfunktion haben wir eine Funktion implementiert, die automatisch die Gebühr für das aufzulistende Produkt berechnet und anzeigt, indem ein Ereignis durch Eingabe des Preises ausgelöst wird.

Nachdem ich bestätigt hatte, dass es automatisch angezeigt wird, sprang ich von der oberen Seite zum Link auf der Produktlistenseite und überprüfte, ob die Produktlistenfunktion funktionierte, und stellte ein Problem fest, dass die Gebühr nicht angezeigt wurde, selbst wenn ich den Preis eingegeben hatte.

Als ich die Codebeschreibung usw. überprüfte, wurde ich von dem Phänomen in Panik versetzt, dass die automatische Gebührenanzeigefunktion wiederhergestellt wurde, bevor ich es wusste.

Ein Hinweis auf die Lösung

Ich mache verschiedene Dinge und es ist unmöglich, die Funktion wiederherzustellen, bevor ich es wusste. Als ich also versuchte zu sehen, wie sich das Verhalten jedes Mal ändert, wenn ich den Code einzeln umschreibe oder eine Taste drücke, scheint JavaScript unmittelbar nach dem __ Seitenübergang auf der Seite zu sein. Es wurde nicht geladen, und als ich die Seite nach dem Springen zum Linkziel erneut aktualisierte, wurde festgestellt, dass JavaScript geladen wurde __.

window.addEventListener('load',function(){
Code zur Anzeige der Gebühren in diesem
});

Da das Laden von Seiten erforderlich ist, um alle JavaScript-Ereignisse auszulösen, habe ich mich gefragt, ob das Laden beim Überspringen der Seite nicht geladen werden würde. Als ich nachforschte, wurde jedoch gesagt, dass Laden ein Ereignis ist, das geladen wird, selbst wenn die Seite geändert wird, und ich wurde immer verwirrter, dass JS nicht funktionierte.

Lösung

Schließlich war am JavaScript-Code selbst nichts auszusetzen. Also habe ich mich entschlossen zu überprüfen, wie JavaScript überhaupt geladen wird. Der Ablauf beim Laden von JavaScript mit Rails ist wie folgt.

Es wird in das Head-Tag der allgemeinen Ansicht von application.html.erb geladen.

<head>
  <title>Furima</title>
  <%= csrf_meta_tags %>
  <%= csp_meta_tag %>
  <script type="text/javascript" src="https://js.pay.jp/v1/"></script>
  <%= stylesheet_link_tag 'application', media: 'all'%>
  <%= javascript_pack_tag 'application' %>← Anwendung mit dieser Beschreibung.Laden von js.
</head>

Das in Rails verwendete JavaScript wird zusammen in app / javascript / packs / application.js geladen.

Unterlassung
require("@rails/ujs").start()
require("turbolinks").start()← Störungsursache (unten erklärt)
require("@rails/activestorage").start()
require("channels")
require("../fee.js")
require("../card.js")
Unterlassung

Als ich nacheinander untersuchte, was gelesen wurde, wurde endlich die Ursache gefunden. __ Die Ursache des Fehlers war das Laden von Turbolinks in application.js. __turbolinks lädt viel JavaScript in der groß angelegten Entwicklung, daher scheint es für das effiziente Laden zu sein.

Es gibt jedoch einen schlechten Teil, und es scheint ein Phänomen zu geben, dass das Ereignis, das das Laden auslöst, nicht unmittelbar nach dem Seitenübergang __ gelesen wird.

In Schienen wird beim Erstellen einer Anwendung die Beschreibung zum Lesen von Turbolinks automatisch in application.js geschrieben. turbolinks dient dazu, JavaScript auf großen Websites leicht lesbar zu machen, und ist nicht erforderlich, wenn Sie ein Portfolio einzeln erstellen. Wenn Sie dies auskommentieren und unlesbar machen, wird JavaScript nach dem Seitenübergang nicht gestartet Ich konnte das Problem lösen.

In der groß angelegten Entwicklung scheinen Turbolinks usw., die standardmäßig gelesen werden, möglicherweise in etwas anderes umgeschrieben zu werden.

Ich bin noch ein Anfänger und habe möglicherweise das falsche Wissen geschrieben. Ich wäre Ihnen dankbar, wenn Sie mir sagen könnten, ob es Fehler gibt.

Ich denke, es war ein schlechter Satz, aber danke.

Recommended Posts

Ich hatte das Problem, dass JS nach dem Seitenübergang nicht gelesen wird und JS beim Laden gelesen wird.
Nachdem ich das Montyhall-Problem mit Ruby überprüft hatte, war es eine Geschichte, die ich gut verstehen konnte und die ich nicht gut verstand
Turbolinks: Ich möchte das Problem lösen, dass JS nicht richtig angezeigt wird, es sei denn, es wird beim Übergang mit link_to neu geladen
Informationen zum Problem, dass das Image nach der AWS-Bereitstellung nicht angezeigt wird
Wenn ich die Internationalisierung mit Spring Boot unterstütze, bin ich süchtig danach, kein bestimmtes Gebietsschema zu übersetzen
4 technische Bücher, die ich leider als Neuling hätte lesen müssen
Wenn ich die Datei mit der Klasse # getResource aus der JAR-Datei aufrufe, wird sie nicht gefunden und ist ein beschissenes Memorandum
Ich möchte eine Verbindung herstellen, wenn eine Datenbank mit Spring und MyBatis erstellt wird