web-dev-qa-db-ja.com

スクロールせずにon scrollイベントをトリガーする方法

私の質問は、どのようにスクロールイベントをトリガー(シミュレートまたは何かesle)できますか?私の特殊なケースでは、LinkedInですべての保護をロードしたくありません。

PHPまたはJavascriptソリューションは必要ありません。chromeでdev-toolsを使用するだけで目標を達成できます。

16
CTSchmidt

または、次のように実際のscrollイベントを手動でトリガーできます。

el.dispatchEvent(new CustomEvent('scroll'))

+1ピクセルと-1ピクセルによるデュアルスクロールよりも、ハックの感じが少ない(そしてパフォーマンスが高い).

これにより、scrollイベントをリッスンするコードを実行できます。

編集:IE11またはその他のレガシーブラウザをサポートするには、mdn-polyfillsなどのCustomEventポリフィルの使用を検討してください

12
Pandaiolo

これはChromeまたはFirefoxでは動作しません

window.scrollTo(window.scrollX, window.scrollY);

これは両方で機能します:

window.scrollTo(window.scrollX, window.scrollY - 1);
window.scrollTo(window.scrollX, window.scrollY + 1);

派手ではありませんが、動作します。

コードの最初の行のみが必要であり、他の行はスクロールを元の場所に戻すだけであることに注意してください。ボタンのスクロール機能をトリガーする必要がありました。ボタンを2回タップすると、スクロールの効果が表示され、あまりおもしろくありません。そのため、2行目のコードも追加することを好みます。

11
Fran Cano

Javascriptソリューションが絶対に必要です。他にイベントのリスニング/トリガーを行う予定はありますか?

スクロールイベントをfireしたい場合は、開発ツールコンソールでwindow.scrollTo(window.scrollX, window.scrollY);と入力することで、文字通り既にある場所までスクロールします。または、 CustomEventdispatchEvent 関数の組み合わせを使用して、偽物を作成することもできます。

スクロールイベントで何かをトリガーする場合は、window.addEventListener("scroll", function(evt) { ... });を使用してスクロールをリッスンし、処理関数に必要な処理を実行させます。

Firefoxではwindow.scrollTo(window.scrollX, window.scrollY);が機能しません。何も起こらず、実際にスクロールする必要がないため、準備ができている場所に移動する必要があるようです。

ただし、window.scrollTo(window.scrollX, window.scrollY-1);は機能しています。このコマンドにより、_window.scroll_イベント関数が発生します。

(例えば、チートしようとする:window.scrollTo(window.scrollX, window.scrollY-0)も機能していません。)

1
user2280102

誰もが答えたように、window.scrollTo(window.scrollX, window.scrollY);は本当に機能しますが、場合によっては、ウィンドウの現在のスクロール位置に数値を追加する必要があります。たとえば、私の場合は1をscrollYに追加し、次に、次のようなscrollToメソッドを呼び出します。

window.scrollTo(window.scrollX, window.scrollY + 1);

0
Behnam Azimi

場合によっては、scrollElementを見つける必要があります。私の場合、私のscrollElementはbodyであり、モバイルで実行されているため、以下のコードは正常に機能します。

document.body.scrollTo(window.scrollX, window.scrollY + 1);

役に立てば幸いです。

0
Jerry Ni