ご覧ください。ツールチップはまったく表示されません。ツールチップのdataFormatが他の関数によってオーバーライドされているかどうかはわかりません。また、ズームインしたときのx軸の日付に分が表示されないのですが、どうすればよいですか?
3 に答える
Firefox では、ツールチップ フォーマッタの JavaScript エラーが次のようになっていることがわかります。
Uncaught TypeError: Cannot read property 'name' of undefined
これはドキュメントに反しているようです(おそらく共有されていないためですか?)。私はそれを使用して見つける
this.points[0].series.name
これを修正します。これを機能させるには、 this.y を同様this.points[0].y
のものに変更する必要があることに注意してください。
まったく別の観点から言えば、Ultrabook で Chrome を使用している場合、ハイチャートのツールチップにも問題がありました。この問題は IE や FireFox では発生していませんでした。
私は共有シリーズを使用していなかったので、上記の解決策は適用されませんでした。
問題は、Chrome が Ultrabook にタッチスクリーンがあることを認識し、タッチ イベントを有効にすることです。Highcharts (v2.2.5) は、タッチをサポートするデバイスの「mouseover」イベントを有効にしませんが、代わりに「touchstart」イベントを有効にします。マウスをアイコンの上に置いたときに「タッチスタート」が発生していなかったため、ツールチップは表示されませんでした。
これは、デバイスの種類に基づいてハンドラーを追加するハイチャートの行です。
.on(hasTouch ? 'touchstart' : 'mouseover', function (e) {
series.onMouseOver();
if (e.target._i !== UNDEFINED) { // undefined on graph in scatterchart
points[e.target._i].onMouseOver();
}
})
したがって、これらのケースでは、'mouseover' ハンドラーを明示的に追加し、'touchstart' をトリガーすることがおそらく機能します。
Highcharts は ontouchstart の存在をチェックして、タッチ対応デバイスを判別します。
hasTouch = doc.documentElement.ontouchstart !== UNDEFINED,
これを試して:
formatter: function() {
var point = this.points[0],
x = point.x,
y = point.y,
seriesName = point.series.name;
return Highcharts.dateFormat('%A,%b %e,%Y, %H:%M', x) +'<br/> '+'<strong>'+ seriesName +'</strong>'+ y;
}
私は Highcharts をよく使用していますが、Highstock を使用したことはありませんが、Markが言ったように、これはドキュメントに反します。バグのように見えます。