- Note

[回避策]jQueryのonでpassiveをfalseにする方法

Tag:

エラー内容
[Intervention] Unable to preventDefault inside passive event listener due to target being treated as passive.
これはイベントに{ passive: true }でバインドしたハンドラ内でe.preventDefault();を行った時起きるエラーです。

jQueryのonメソッドはデフォルトで{ passive: true }となってしまうため
回避策としてjsデフォルトのaddEventListenerを使う方法がよく紹介されます。

2020年6月25日現在jQueryの機能として追加はされていないようです。
しかしjQueryを使っての回避策として、特定のネームスペースをつけた時のみ挙動を変更する方法がありました。

 

イベントの種類(touchmove)とネームスペース(drag)の部分は
実際のプログラムに合わせて変更する必要があるかもしれません。

この回避策は下記ページにありました。
jQueryの機能としてpassiveを変更できるようにするかの議論のようです。
Add support for passive event listeners | GitHub

この回避策は
$(document).on(‘touchmove.drag’, ‘.target’, callback)
のようなデリゲートでの形には対応していないようです。

コメントを残す