2016-10-26 9 views
1

私はturbolinks 5と5のレールを使用しており、最新のHighchartsを使用しています。 Tターボリンクとハイチャートで以前のJavaScriptを実行しないようにする// LazyHighCharts

LazyHighChartsはTurbolinks5ための機能を提供し、私はグラフが以前turbolinkがロードされたページからナビゲートしていたときに

(function() { document.addEventListener("turbolinks:load", function() { //code window.chart_my = new Highcharts.Chart(options); }); })()

でしかし、私は新しくロードされたページでエラーが発生しましたjavascriptのチャート建物をラップします。

Uncaught Error: Highcharts error #13: www.highcharts.com/errors/13

そのように見える新しいDOMにhighchartグラフはrenderedToされているという要素がありませんので、"turbolinks:load"でロードされたすべての以前のjavascriptは、エラーをスローするhighchartを再評価し、原因となっています。

文書から"turbolinks:load"イベントのバインドを解除しようとしましたが、機能しません。それはとにかくそれを再評価する。

ソリューションについて考え、LazyHighChartsをフォークにlayout_helperを書き換えるので、JavaScriptは、DOM要素の後outputedされますが、ページフローが

ロード-DOM(グラフ) はJSを評価する(同期になるように、このページを遅らせるだろう) - > ロード-DOM(グラフ) はJS(同期を評価) ---> ロード-DOM(グラフ) は、JS(同期) などを評価し、それは私が推測、ページの読み込みが遅くなります。

多分、ここにいた人たちがこの問題を解決する方法があります。

答えて

1

document.addEventListener("turbolinks:load", function(e) { 
    // code 
    e.target.removeEventListener(e.type, arguments.callee); 
}); 
をlazy_high_chartsするプル要求を行いました
関連する問題