2016-06-18 7 views
0

Ich habe 2 Seiten, beide enthalten global.js, die über globale Funktion hat. Ich muss global() an beiden Orten aus bestimmten Gründen ausführen, wie kann ich verhindern, dass es zweimal ausgelöst wird? Wie Seite 1 ist Layout, es wird immer global() zuerst ausgeführt. Also, wenn global bereits ausgelöst wird, triggern Sie es nicht erneut, wenn ich Seite 2 besuche. Seite 3,4,5 usw. wird global() des Layouts ausgeführt, so dass es nicht kollidiert. Mein Anliegen ist die 2. Seite.vermeiden Sie Funktion, zweimal zu schießen

+1

Ich sehe das nicht als Bedenken, wie die Seite neu geladen wird, alle Ihre Skripte tun so keine Frage zweimal zu feuern. Zeig uns was du schon gemacht hast? –

+0

Wenn die Seiten unabhängig voneinander geladen werden, warum sollten Sie besorgt sein, dass 'global()' zweimal ausgelöst wird? Andernfalls können Sie den Aufruf der Funktion auf Seite 2 an erster Stelle verhindern. – Terry

+0

@AkshayKhandelwal Ich habe 2 js Datei, eine ist Layout, eine ist seine Kinder. Ich muss global() in beiden Dateien ausführen. –

Antwort

1

Solange Ihre JS-Datei nur einmal geladen wird, können Sie folgendes tun:

Sie eine Eigenschaft auf die Funktion zuweisen können, wie Sie es mit einem Objekt würde. Im folgenden Beispiel füge ich eine Eigenschaft executed mit einem Standardwert false hinzu. executed wird auf true gesetzt, wenn der Inhalt der Funktion ausgeführt wird. Wenn die Funktion das nächste Mal aufgerufen wird, stellt die if-Anweisung sicher, dass die Funktion sofort zurückkehrt.

function global() { 
 
    if (global.executed) { 
 
    return; 
 
    } 
 
    global.executed = true; 
 
    // your code here ... 
 
} 
 
global.executed = false;

Wenn jedoch beiden Seiten unabhängig voneinander die JS-Datei zu laden, müssen Sie sich erinnern, wenn die Funktion irgendwo statisch genannt wird, zum Beispiel in localStorage, in einem Cookie oder auf dem Server.

+0

Macht jetzt Sinn. Vielen Dank. –

Verwandte Themen