Bei mir wird in Sharepoint 2016 eine Javascript-Function direkt aus der Masterpage heraus ausgerufen. Durch MDS und andere Dinge wird diese Funktion bei einem „Strg“+“F5“ reload dadurch bis zu 3x aufgerufen. Um das zu verhindern gibt es die Singleton-Pattern. Dis sollte so aussehen:
function MySingletonClass () { if (arguments.callee._singletonInstance) { return arguments.callee._singletonInstance; } arguments.callee._singletonInstance = this; this.Foo = function () { // ... }; } var a = new MySingletonClass(); var b = MySingletonClass(); console.log( a === b ); // prints: true
Da das bei mir so nicht korrekt funktioniert hat (vermutlich habe ich den richtigen Aufruf einfach nicht hinbekommen, habe ich das so abgewandelt:
// My simple "singleton Pattern" var sp2016InitFirstRun = true; // This function is called from at the bottom of my masterpage!! function $_global_sp2016_js_init() { // My simple "singleton Pattern" if (!sp2016InitFirstRun) { return; } else { sp2016InitFirstRun = false; }; // The following code is only run once!! ... }; $_global_sp2016_js_init()
Funktioniert wie gewünscht: Der Code wird nur 1x gestartet. Egal wie oft Sharepoint die Function aufruft 😉
Quelle: stackexchange.com