スクロールイベントリスナーは、ユーザーが最初にページをスクロールした後、特定の時間が経過した後にファイアリングを停止して、スクロールを正常にスクロールできるようにする場合があります。ここで最初のトリガー後にスクロールイベントリスナーを停止する方法はありますか?
は、私は現在、それが働いて持っている方法は次のとおりです。
var scrollcount = 0
// Scroll event listener
window.addEventListener("scroll", function() {
setTimeout(function() {
scrollcount ++
if (scrollcount < 40) {
window.scrollTo(0, 0);
}
}, 1200);
});
scrollcount
変数ずつスクロールと一緒に、および40は、それが私のラップトップのトラックパッド上で1つのスクロールのために占めるどのくらいです。カウンターが40未満の場合、ユーザーがスクロールホイールを離すとページはページの一番上にスクロールされます.40を超えるとスクロールホイールは移動しません。
これは本当に悪いことだと私は認識しています。だから、誰かがもっと信頼できる方法を持っているのだろうかと思っています。私は、removeEventListenerメソッドがsetTimeoutが遅延を終了すると、イベントリスナーをオフにしようとしましたが、ウィンドウをターゲットにすることができませんでした。私は、removeEventListenerは、スクロールイベントリスナーがコンテナdivに割り当てられていて、ウィンドウではなく、スクロールイベントリスナーが最初に機能しないことを試みたときに機能すると思います。
可能であれば、jQueryやその他のライブラリを避けたかったのですが、この時点では確実に動作するようなものを使用します。
それは非常に多くのルックスのような[XY問題](http://meta.stackexchange.com/questions/66377/what-is-the-:たとえば、あなたがこのような何かを行うことができますxy-問題)。元の問題が何だったのか説明できますか?ユーザーが最初にページをスクロールしようとすると、ページの上部にスクロールしようとしていますか? – TeWu
はい。私はそれがすぐにトリガーしないようにしたい。ユーザーの最初のスクロールでアニメーションがトリガーされ、アニメーションが終了すると、ウィンドウをページの先頭に戻したいので、ユーザーが自由にスクロールできるようにします。私の問題は、ページの上部にジャンプすることができ、 'scrollcount'はそれが後でトップに戻るのを止め、ユーザーにスクロールさせることです。しかし、この解決策は私のスクリーン/トラックパッドには特別ですタブレット/モバイル/他のコンピュータで動作しません。私の質問は、確かに良いソリューションがありますか? – Evan