カラーピッカーの一つに jscolor Color Picker というものがあります。
結構デザインが良くて使いたいと思うのですが、現行バージョン(2.0.4)だと、Android のChrome ブラウザでは色選択中に画面がスクロールしてしまう問題があります。
今回はそのバグを修正する方法です。
なお、説明は jscolor v2.0.4 のものです
jscolor.js の112行目から始まる以下の関数を修正します。
attachEvent : function (el, evnt, func) {
if (el.addEventListener) {
el.addEventListener(evnt, func, false );
} else if (el.attachEvent) {
el.attachEvent('on' + evnt, func);
}
},
上記の関数を以下のように変更します
attachEvent : function (el, evnt, func) {
if (el.addEventListener) {
el.addEventListener(evnt, func, { passive: false } );
} else if (el.attachEvent) {
el.attachEvent('on' + evnt, func);
}
},
addEventListener を呼び出すときにオプションとして { passive: false }
を渡してあげることで、jscolor Color Picker で呼び出される preventdefault()
関数が有効に働くようになります。
開発元にプルリクでも送ろうと思ったのですが、開発元のGithub リポジトリがどれなのか判別つかなかったので、とりあえずここに解決方法を記述しておきます