2016-08-04 9 views
0

Rails Turbolinks 5.0を使用しているときにページロードで実行する必要があるJavascriptを設定する正しい方法は何ですか?ターボリンクが動作しないブラウザでページを表示しても、コードはすべてのページの読み込み時に1回だけ実行する必要があります。jQuery ready()を使用したTurbolinks 5.0のフォールバック

次のコードは、Turbolinksが作業を行うときに仕事をしていません:

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(); 
}); 

ブラウザはTurbolinksをサポートしていないとき、私はまだセットアップコードを実行する必要があります。すなわちそのような:

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

問題は、上記のフォールバックソリューションがTurbolinksがサポートされている場合、完全なページのリロードで二回実行するようにsetupPage()機能を引き起こしています。

この問題を処理する標準的な方法は何ですか?

答えて

0

すでに実行されているかどうかを確認するブール値を設定します。

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

私は実際にはJavascriptプログラミングでは最高です。 誰かが良い方法を知っていれば、それを行ってください!

関連する問題