2016-08-04 14 views
0

Was ist die richtige Methode zum Einrichten des Javascript, das beim Laden der Seite ausgeführt werden muss, wenn Sie Rails Turbolinks 5.0 verwenden? Der Code muss bei jedem Laden der Seite genau einmal ausgeführt werden, selbst wenn die Seite in einem Browser angezeigt wird, in dem Turbolinks nicht funktionieren.Fallback für Turbolinks 5.0 mit jQuery ready()

Der folgende Code macht den Job, wenn Turbolinks Arbeit tun:

function setupPage() { 
    // Setup code that cannot run more than once. 
} 

// Fires with every page request (full or triggered with Turbolinks) 
$(document).on('turbolinks:load', function(){ 
    setupPage(); 
}); 

Wenn der Browser Turbolinks nicht unterstützt Ich habe immer noch die einrichten Code ausführen. das heißt etwa so:

// Fires only with full page reload - Intended as a fallback for when Turbolinks are not supported by the browser. 
$(document).ready(function(){ 
    setupPage(); 
}); 

Das Problem ist die oben Ausweichlösung bewirkt, dass die setupPage() Funktion zweimal auf der ganzen Seite neu laden laufen, wenn Turbolinks unterstützt werden.

Wie ist der standardmäßige Umgang mit diesem Problem?

Antwort

0

Ich würde einen Boolean setzen, um zu überprüfen, ob es bereits ausgeführt wurde.

var setupPage = function() { 
    // Setup code that cannot run more than once. 
    setupPage = function() {}; // set setupPage to an empty function 
} 

$(document).on('turbolinks:load ready', setupPage); 

Ich bin wirklich nicht das beste bei Javascript-Programmierung. Also, wenn jemand einen besseren Weg kennt, dann versuchen Sie es!