0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

jQuery3系にてfadein,fadeoutがフェードしない時

Last updated at Posted at 2021-03-18

現象

jQueryを1,2系から3系にバージョンアップした際、fadein()やfadeout()がうまく動かず、瞬間的に表示/非表示が切り替わる挙動を示すことがある。

原因

3系にて現在時刻の取得処理がjQuery.now()ではなく、Date.now()を利用するようになっている。
Date.now()をグローバルに上書き1してしまうような、日時操作系の古いライブラリなどが共存している環境においては干渉しアニメーションが異常な動作となる。

2系のタイマー処理
https://github.com/jquery/jquery/blob/2.2-stable/src/effects.js#L31
3系のタイマー処理
https://github.com/jquery/jquery/blob/main/src/effects.js#L42

対応策

  • 問題となっている日時操作ライブラリを最新に更新する。
  • 更新してもDate.now()の挙動が変わらない場合、可能であればPRを出すか、あるいはそのライブラリの使用を辞める。
  • メンテがとうの昔に終わっており、代替案もすぐには用意できずどうにもこうにもならない場合は、最悪ライブラリに手を入れて自社管理することも考える。(こういうケースではだいたい自サーバーでホスティングしていると思うので…)
  1. コンソールでDate.now()を実行した時に、Unixタイムスタンプではなくフォーマット済の時刻文字列を返却するように変えるライブラリが存在し、こういったものが該当する。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?