スクロールイベントをキャプチャする他のすべての手段を有効にしたまま、スクロールバーのドラッグを無効にしたいと考えています。
スクロールバーでマウスダウン イベントをキャプチャする手段も十分です (そのトピックのほとんどのテキストは、不可能を示しています)。問題を解決するために外部ライブラリを使用したくありません。以下に説明する問題を解決するための他の手段は大歓迎です。
このソリューションは、現在のバージョンの Google Chrome でのみ機能する必要があります。
document.getElementById('mainTable').parentNode.addEventListener("scroll",function(e){
...
//Other code logic and syntax omitted
...
//Logic for deriving if scrolling up or down is accomplished by comparing
//the previously recorded .scrollTop value to the current value of the div
//containing the table 'mainTable' of datapoints
if(scrollDownEvent){
document.getElementById("mainTable").parentNode.scrollTo(0,.75*totHeight);
}else if(scrollUpEvent){
document.getElementById("mainTable").parentNode.scrollTo(0,.25*totHeight);
}else{
}
}
背景 いくつかの非常に簡単な背景情報。各ポイントに大量のデータを含む数百万のデータ ポイントがあります。
200 個のデータ ポイントを html の table/tr/td セットアップに読み込みます。オブジェクトの javascript 配列に 400 個のデータ ポイントをキャッシュします (任意の時点で上下に約 100 個)。
ユーザーが下にスクロールしたときに、表示されているデータポイントの端がキャッシュされたデータ ポイントの端に近づくと、より多くのポイントがハードドライブからキャッシュに読み込まれます (html5 ファイル システム API 経由)。スクロール イベント属性の状態がどれだけ下にスクロールされたかに応じて、テーブルの反対側の端からいくつのデータ ポイントが削除され、新しいデータ ポイントがテーブルのターゲット エッジにロードされるかが定義されます。スクロール イベントを処理した後、テーブルの高さの 25% またはテーブルの 75% までスクロールします。
私が直面している問題は、スクロール イベントがスクロール バーのドラッグと他のスクロール イベントの手段とでは異なる方法で発生するように見えることです。スクロールバーのドラッグイベントをスクロールイベントとしてキャプチャしていますが、スクロールバーを一番下までドラッグすると(コードは完全に下にドラッグしないと機能します)、何らかの形で上書きするように見えることがあります上にスクロールするための私のJavaScriptコード - その結果、下にスクロールできなくなり、スクロールイベントを発生させることができなくなります。
以下からキャプチャされたスクロール イベントに問題はありません。
- マウスホイールの移動
- 上下の矢印をマウスでクリック
- スクロールバーに相対的な上部/下部領域でのマウス クリック
- スクロールバーに相対的な上部/下部領域でのマウスダウン。
- 上下矢印ボタンでのマウスダウン
- キーボードの上/下矢印のキーダウン