Window.Onscrollメソッドを使用してスクロール方向の検出を含めることはできますか?Window.Onscrollメソッドを使用してスクロール方向の検出を含めることはできますか?
14
A
答えて
21
ページの読み込み時に、スクロールイベントが発生するたびにscrollXとscrollYを記録すると、以前の値と新しい値を比較してスクロールした方向を知ることができます。ここでは概念の証明だ。(それはIE9、FFとChromeのための準拠していますが)
function scrollFunc(e) {
if (typeof scrollFunc.x == 'undefined') {
scrollFunc.x=window.pageXOffset;
scrollFunc.y=window.pageYOffset;
}
var diffX=scrollFunc.x-window.pageXOffset;
var diffY=scrollFunc.y-window.pageYOffset;
if(diffX<0) {
// Scroll right
} else if(diffX>0) {
// Scroll left
} else if(diffY<0) {
// Scroll down
} else if(diffY>0) {
// Scroll up
} else {
// First scroll event
}
scrollFunc.x=window.pageXOffset;
scrollFunc.y=window.pageYOffset;
}
window.onscroll=scrollFunc
0
私はトラブルIE8でこの作品を作っていた - すべてのスクロールは、水平方向として検出しているように見えます。
変更されたスクリプトdemoは、ie8で動作し、さらにいくつかのブラウザをカバーします。 jQueryを使って
function scrollFunc(e) {
function getMethod() {
var x = 0, y = 0;
if (typeof(window.pageYOffset) == 'number') {
x = window.pageXOffset;
y = window.pageYOffset;
}
else if(document.body && (document.body.scrollLeft || document.body.scrollTop)) {
x = document.body.scrollLeft;
y = document.body.scrollTop;
}
else if(document.documentElement && (document.documentElement.scrollLeft || document.documentElement.scrollTop)) {
x = document.documentElement.scrollLeft;
y = document.documentElement.scrollTop;
}
return [x, y];
}
var xy = getMethod();
var xMethod = xy[0];
var yMethod = xy[1];
if (typeof scrollFunc.x == 'undefined') {
scrollFunc.x = xMethod;
scrollFunc.y = yMethod;
}
var diffX = scrollFunc.x - xMethod;
var diffY = scrollFunc.y - yMethod;
if(diffX<0) {
// Scroll right
} else if(diffX>0) {
// Scroll left
} else if(diffY<0) {
// Scroll down
} else if(diffY>0) {
// Scroll up
} else {
// First scroll event
}
scrollFunc.x = xMethod;
scrollFunc.y = yMethod;
}
window.onscroll=scrollFunc
2
、あなたはまた、イベントハンドラの引数として、スクロールの変化を提供するカスタムスクロールイベント登録できます
:custom_scroll
に結合し、そして、代わりの
scroll
var previous_scroll = $(window).scrollTop();
$(window).on('scroll', function() {
var scroll = $(window).scrollTop(),
scroll_change = scroll - previous_scroll;
previous_scroll = scroll;
$(window).trigger('custom_scroll', [scroll_change]);
});
を
$(window).on('custom_scroll', function pos(e, scroll_change) {
console.log(scroll_change);
});
関連する問題
- 1. アンドロイドデバイスのjavascriptを使用して向きを検出する
- 2. Androidでスクロールの表示方向を検出する方法
- 3. バックボーンルーティングは、順方向か逆方向かを検出します
- 4. Javascriptを - スクロール方向がaddEventListenerを「スクロール」で検出
- 5. MinGWを使用してwinsock2.hを含めることはできません
- 6. Spring Beanクラスに静的メソッドを含めることはできますか?
- 7. Observable subscribeメソッド内にロジックを含めることはできますか?
- 8. AndroidでACCELEROMETERを使用してデバイスの移動方向を検出する
- 9. 属性を使用してメソッドをオーバーライドすることはできますか?
- 10. アンドロイドスマートフォンを使用して方向の変化を検出する方法(度)
- 11. UWPアプリでのスクロールの方向を検出
- 12. QLPreviewControllerを使用してPDFを水平方向にスクロールする
- 13. 出力ファイルにコードを含まない条件付きメソッド呼び出しを含めることはできますか?
- 14. メソッドまたは変数を使用してリソースファイル内のエントリを呼び出すことはできますか?
- 15. バッチファイルを使用してファイルのファイル形式とエンコーディングを検出することはできますか?
- 16. javascriptを使用してウェブページ上部のスクロールを検出する
- 17. 検索コマンドをマクロに含めることはできますか?
- 18. cssを使用してhtmlフラグメントを含めることは可能ですか?
- 19. メソッドの出力を使用して別のBeanをオートワイヤすることはできますか?
- 20. UITableViewヘッダーがスクロールするときを検出する方法は?
- 21. スクロールパネルを検出する方法はまだGWTでスクロールしていますか?
- 22. TypeScriptインターフェイスにメソッドを含めることは可能ですか?
- 23. メディアクエリを使用して別のCSSファイルにCSSファイルを含めることはできますか?
- 24. Gradleでスクリプトプラグインを使用してbuildscriptを含めることはできますか?
- 25. tsconfig.jsonファイルでTypeScriptを使用するときにjsonファイルを含めることはできますか?
- 26. このJavaScript関数を一方向に呼び出すことはできますが、もう一方向に呼び出すことはできません。
- 27. PInvokeを使用して自分のdllからメソッドを呼び出すことはできますか?
- 28. DFSの反復バージョンを使用して有向グラフのサイクルを検出する方法はありますか?
- 29. UICollectionView:スクロールが停止したときを検出する方法
- 30. Activitiを使用してアプリケーション実行中の問題を検出することはできますか?
+1:それも私が言うつもりだった。私が追加しなければならないのは、自由にスクロールできる(XまたはYだけに制約されない)入力デバイスがあるかもしれないので、大きなIFを2つに分割するということです。それが最初のスクロールであれば、それがダウンしているか、または右に進んでいると仮定することもできます。また、イントラページリンクで何が起こるかを確認する必要があります(例:href = "#top")。 – nickf
本当にうまくいきます!スクロールの速度をどのように計算することができるのだろうか? –
イベントのタイムスタンプを取得できると思います。連続する2つのイベントの差を求め、上記で計算した差異をタイムスタンプ差で除算します。 –