Gibt es eine Möglichkeit, JavaScript-Code nur einmal auszuführen, wenn ein Fenster oder ein Tab in einem Browser geöffnet wird und dann nie wieder für den gesamten Lebenszyklus von dieses Fenster/Tab (auch wenn man weg navigiert)?JavaScript-Code ausführen, sobald ein Browserfenster/Tab zum ersten Mal geöffnet wird
Antwort
Eine Möglichkeit, window.sessionStorage
so zu verwenden.
if (!window.sessionStorage.getItem("isExecuted")) {
//execute code
window.sessionStorage.setItem("isExecuted", true);
}
Die session Eigenschaft ermöglicht es Ihnen Objekt eine Sitzung Speicher zuzugreifen. sessionStorage ist ähnlich wie Window.localStorage, der einzige Unterschied zwischen ist, dass Daten, die in localStorage gespeichert sind, kein Ablaufdatum haben. Daten, die in sessionStorage gespeichert sind, werden gelöscht, wenn die Seitensitzung beendet wird. Eine Seitensitzung dauert so lange, wie der Browser geöffnet ist und über Seite neu geladen und wiederhergestellt wird. Das Öffnen einer Seite in einer neuen Registerkarte oder einem neuen Fenster bewirkt, dass eine neue Sitzung initiiert wird, die davon abweicht, wie Sitzungscookies funktionieren.
Ich habe dies versucht, aber das Problem ist, dass wenn Sie "in neue Registerkarte öffnen" zum Beispiel die SessionStorage von der Registerkarte, aus der Sie navigieren, auf die neue Registerkarte kopiert wird. – Palmi
es erscheint nicht in Firefox. wird überprüft, wenn zurück zur Arbeit – naveen
Es trat mit IE11 – Palmi
Sie können localStorage verwenden.
Lokaler Speicher ist pro Herkunft (pro Domäne und Protokoll). Alle Seiten eines Ursprungs können dieselben Daten speichern und darauf zugreifen.
Das localStorage-Objekt speichert die Daten ohne Ablaufdatum. Die Daten werden nicht gelöscht, wenn der Browser geschlossen wird, und sind am nächsten Tag, in der nächsten Woche oder im nächsten Jahr verfügbar.
localStorage.getItem('key');
localStorage.setItem('key', 'value');
Aber das wird auch nach dem Schließen des Browsers bestehen bleiben. –
"Das localStorage-Objekt speichert die Daten ohne Ablaufdatum. Die Daten werden nicht gelöscht, wenn der Browser geschlossen wird, und sind am nächsten Tag, in der nächsten Woche oder im nächsten Jahr verfügbar." –
Genau das habe ich gesagt und genau das Problem. Sie müssen es gelöscht werden, wenn die Registerkarte geschlossen wird. –
Hier ist eine Lösung auf die Überprüfung der window.history.length basiert, ist 1 (das heißt das erste Mal, wenn sie zu diesem Fenster/Tab waren). Es wird auch überprüft, ob die Seite nicht einfach aktualisiert wurde.
Wenn Sie das Skript, das Sie ausführen möchten, einmal dort platzieren, wo ich meine Warnung habe, sollte es für das funktionieren, was Sie versuchen zu tun.
Sie meinen: auch wenn Sie auf verschiedenen Seiten im selben Fenster/Tab navigieren? –
@jeremycastelli Ja – Palmi
Sie könnten Cookies verwenden, um aufzuzeichnen, dass Sie das Skript ausgeführt haben, und es dann nur ausführen, wenn der Cookie nicht gesetzt ist. Der Benutzer kann natürlich den Cookie entfernen - aber die meiste Zeit werden sie das nicht tun. –