2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

DateTimePickerでの時間選択のスクロールが逆方向に動く

Posted at

事象

DateTimePickerでの時間選択を行う際のスクロールが逆方向に動いてしまう。

原因

DateTimePickerのバグだと思われる。

GitHub上にissueがあった。
https://github.com/xdan/datetimepicker/issues/763

行なったこと

jquery.datetimepicker.full.min.jsのファイルがプロジェクト内にあったのバージョンアップを試みたが、プロジェクト内のファイルを他のメンバーが直接書き換えを行なったコミット履歴が存在したので該当箇所を直接書き換えることにした。

今回は709行目からのコードを書きえた。
GitHub上のissueと同じコードが存在しなかったので、バージョンによってコードが変わるのだと思われる。

                 i = l[0].clientHeight, s = o[0].offsetHeight, r = (n = i / s) * d[0].offsetHeight, 1 < n ? u.hide() : (u.show(), u.css("height", parseInt(10 < r ? r : 10, 10)), c = d[0].offsetHeight - u[0].offsetHeight, !0 !== a && l.trigger("scroll_element.xdsoft_scroller", [t || f / (s - i)]))
             }), l.on("mousewheel", function (e) {
                 var t, a,
-                    n = (t = e.originalEvent, a = 0, "detail" in t && (a = t.detail), "wheelDelta" in t && (a = -t.wheelDelta / 120), "wheelDeltaY" in t && (a = -t.wheelDeltaY / 120), "axis" in t && t.axis === t.HORIZONTAL_AXIS && (a = 0), a *= 10, "deltaY" in t && (a = t.deltaY), a && t.deltaMode && (1 === t.deltaMode ? a *= 40 : a *= 800), a),
+                    n = (t = e.originalEvent, a = 0, "detail" in t && (a = t.detail), "wheelDelta" in t && (a = -t.wheelDelta / 120), "wheelDeltaY" in t && (a = -t.wheelDeltaY / 120), "axis" in t && t.axis === t.HORIZONTAL_AXIS && (a = 0), a *= 10, "deltaY" in t && (a = t.deltaY),
+                    // スクロール量の正規化
+                    a = a < 0 ? Math.min(a, -1) : Math.max(a, 1), a && t.deltaMode && (a = (1 === t.deltaMode ? a * 40 : a * 800)), a),
+                    // スクロール方向の調整
+                    n = n * -1,
                     r = Math.max(0, f - n);
                 return l.trigger("scroll_element.xdsoft_scroller", [r / (s - i)]), e.stopPropagation(), !1
             }), l.on("touchstart", function (e) {
n * -1,

学び

  1. スクロールの処理が逆方向に動く時は、JavaScriptで処理を行っている可能性が高いと学べた。
  2. プラグイン自体にバグがある可能性を疑う

今後の対応

プラグインが直接書き換えられている状態だと、アップデートが行えないのでアップデートを行えるようにする。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?