スクロールイベントがブラウザまたはユーザーによって行われたかどうかを確認することはできますか?具体的には、戻るボタンを使用するとき、ブラウザは最後の既知のスクロール位置にジャンプすることができる。私がスクロールイベントにバインドする場合、これがユーザーまたはブラウザによって引き起こされたかどうかをどのように伝えることができますか?スクロールイベントがユーザーによって作成されたかどうかを検出します。
$(document).scroll(function(){
//who did this?!
});
ブラウザでスクロールする3つの状況があります。
- ユーザーは何らかのアクションを実行します。例えば、マウスホイール、矢印キー、ページアップ/ダウンキー、ホーム/エンドキーを使用します。
- ブラウザが自動的にスクロールします。たとえば、ブラウザで戻るボタンを使用すると、最後の既知のスクロール位置に自動的にジャンプします。
- Javascriptのスクロールです。たとえば、
element.scrollTo(x,y)
です。
あなたがブラウザまたはユーザーのスクロールイベントのバックボトルトンを使用してジャンプを検討する場合、私はあなたの質問から分からない。一般的には、「ブラウザのスクロール」とは何でしょうか?スクリプトによって開始されたスクロールを意味する場合は、スクリプトがスクロールしてイベントハンドラを非アクティブ化するか、またはフラグを設定してイベントハンドラが無視することを知ることができます。 – RoToRa
私は、戻るボタンを使ってスクロールすることを "ブラウザスクロール"と考えました。それ以外のもの - マウスホイール、上下矢印、センターボタンクリックなどはユーザーのスクロールです。私の本当の疑問は、イベントがどこから来たのかを区別する手段があるのだろうか?私はイベントオブジェクトのプロパティを見ましたが、何も見つかりませんでした。私が想像できる3つのシナリオは、ブラウザが開始したスクロール、javascript開始のスクロール、およびユーザーが開始したスクロールです。事がより明確になることを願っています。 – mrtsherman
@mrtsherman同じ出力を達成しながらこれらのいくつかを見つけました: http://stackoverflow.com/questions/2834667/how-can-i-differentiate-a-manual-scroll-via-mousewheel-scrollbar-from- a-javasc – AlphaMale