2016-07-13 10 views
2

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

+0

Sie meinen: auch wenn Sie auf verschiedenen Seiten im selben Fenster/Tab navigieren? –

+0

@jeremycastelli Ja – Palmi

+0

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. –

Antwort

3

Eine Möglichkeit, window.sessionStorage so zu verwenden.

if (!window.sessionStorage.getItem("isExecuted")) { 
    //execute code 
    window.sessionStorage.setItem("isExecuted", true); 
} 

MDN docs

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.

+0

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

+0

es erscheint nicht in Firefox. wird überprüft, wenn zurück zur Arbeit – naveen

+0

Es trat mit IE11 – Palmi

0

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'); 

Doc: http://www.w3schools.com/html/html5_webstorage.asp

+0

Aber das wird auch nach dem Schließen des Browsers bestehen bleiben. –

+0

"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." –

+0

Genau das habe ich gesagt und genau das Problem. Sie müssen es gelöscht werden, wenn die Registerkarte geschlossen wird. –

0

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.