Warum funktioniert der Verlauf beim Onclick in Firefox nicht?

8

Ich verstehe nicht, warum in Firefox window.history.back() auf einer Schaltfläche funktioniert:

%Vor%

Aber es funktioniert nicht für einen Link:

%Vor%

Was ist der Unterschied?

Ein Beispiel, das dies veranschaulicht:

index.html

%Vor%

second.html

%Vor%

dritte.html

%Vor%

Szenario:

  1. Führen Sie index.html aus und klicken Sie auf Second .
  2. Auf second.html klicken Sie auf Third .
  3. Bei third.html klicken Sie auf Zurück (a) .
  4. Auf second.html klicken Sie auf Zurück (a) . Boom! Ich bin auf der dritten.html und nicht auf der ersten.html !!!

Plunker-Beispiel (Hinweis: Führen Sie es unter Firefox aus)

Wenn Sie Zurück (Schaltfläche) verwenden, funktioniert es. Was ist der Unterschied in <a onclick und <button onclick in diesem Fall?

    
lukpaw 06.12.2013, 09:46
quelle

4 Antworten

12

Sie stehen vor diesem Problem ( zitiert von vikku.info ):

  

Aber was passierte, als ich nach der Navigation auf die Zurück-Taste drücke   verschiedene Seiten wurde ich zwischen den letzten zwei navigierten Seiten gesperrt.

Jemand in den Kommentaren hat den Nagel in dieser Frage getroffen.

  • Wenn Sie das Attribut onclick erstellen, fügen Sie einen zusätzlichen Ereignishandler zum Klicken auf einen Link hinzu. Der Browser wird jedoch immer noch mit einer nativen Logik umgehen, sodass die aktuelle Seite immer noch zum Verlauf hinzugefügt wird.
  • Wenn Sie spezifisches Javascript in das Attribut href übergeben, überschreiben Sie tatsächlich die native Logik des Browsers, sodass die aktuelle Seite nicht zum Verlauf hinzugefügt wird.

EINFACHE, SCHMUTZIGE LÖSUNG

HTML:

%Vor%

VERBESSERTE LÖSUNG

Ich habe auch ein Beispiel erstellt ( Plunker-Beispiel ), das die native preventDefault -Funktionalität nutzt ( MDN bei preventDefault ). In diesem Fall ist es nicht erforderlich, JavaScript im Attribut href zu schreiben. Jetzt können Sie Benutzer unterstützen, die kein JavaScript verwenden, indem Sie beispielsweise auf die Startseite verlinken. Vermeiden Sie besser auch Inline-Event-Handler.

HTML:

%Vor%

Javascript:

%Vor%     
Justus Romijn 06.12.2013, 10:03
quelle
1

Ich denke, es hängt möglicherweise mit dem Attribut href des Tags a zusammen, das als nächster Schritt in der Navigation interpretiert wird (selbst wenn Sie in die Historie zurückkehren).

Entfernen Sie das href -Attribut aus a .

Wie Sie sehen, funktioniert es so:

Demo

Sie müssen nur CSS für die a now

reparieren     
LittleSweetSeas 06.12.2013 09:49
quelle
1

Versuchen Sie Folgendes:

%Vor%

oder

%Vor%     
Mr.G 06.12.2013 10:18
quelle
0

Versuchen Sie es mit

%Vor%

Sehen Sie sich den Link an mehr Details.

    
anand4tech 06.12.2013 09:50
quelle

Tags und Links