2013-09-27 2 views
13

ブラウザで戻る/進むボタンを使用すると、Turbolinksが複数のイベントをバインドする問題が発生しています。私は確かにそれは私が(私のdocument.onを書いてきた方法ではありませんでしたようにする簡単なスクリプト)のイベントを持っているので、リンクをクリックしたときに...Turbolinksはバインディングを倍化します

$(document).on 'page:load', -> 
    alert 'Loaded' 

は一度発生します。バックまたはフォワード(または別のターボリンク)をクリックすると、2回発射します。次回は一気に爆発し、成長し続けます。これはjQueryとTurbolinks以外のマニフェストファイルにある私の唯一のものです。ターボリンクがイベントバインディングを複製しないようにするにはどうすればよいですか?

答えて

15

問題は、頭ではなく、私の体の終わりにjavascript_tagを含めるように見えました。体内では、Javascriptが削除/追加されていました。すべてのTurbolinksページが変更されました。

6

jQuery-turbolinks gemを使用している場合、jQueryドキュメント準備機能のコードが各ページの読み込み時に実行されるため、同じ問題が発生します。ドキュメントオブジェクトはTurbolinksで決して再初期化されないので、結果として重複したバインディングが発生します。この場合の解決策は、$(document).onバインディングをjQuery準備関数の外に置いて、各ページの読み込み時に実行されないようにすることです。

0

私は同じ問題を抱えていました。基本的には、変数をJSを含める前に定義しておけばクエリでした。ちょっと聞こえないと思います...

+0

私はjavascript_includeタグを本文から頭に取り除かなければならなかった。 – Kombo

+0

ああ、ありがとうございます。スクリプト要素を追加するときにライブラリがロードされたかどうかを問い合わせました。あなたがフォールバックではなく、図書館の最初のインクルードで行うことと同じです。ありがとう! –

0

同じ問題が発生しました。問題は、レイアウト上で生成していたマークアップが正しくないことでした。私がしてはならない場所でbodyタグを閉じていた

関連する問題