jQueryが3.5未満の場合は3.5以上にするとバグが発生する可能性あり

jQuery 3.5.0からHTML処理の仕様変更

jQuery 3.5.0からHTML処理の仕様がセキュリティアップデートで変更。

jQuery.htmlPrefilterが正規表現を使用したHTMLタグの変換がXSS(クロスサイトスクリプティング)を発生させる可能性があるため展開方法が変更された。

例えば3.5未満の場合、$('<ul/><li/>')は以下のように展開される。

jQuery 3.4.1 htmlPrefilter sample

<ul></ul>
<li></li>

 

そして3.5以上の場合、$('<ul/><li/>')は以下のように展開される。

<ul>  
  <li></li>
</ul>

jQuery 3.5.0 htmlPrefilter sample

上記のようにHTMLの構造が大きく変わっているため、jQueryのバージョンを3.5.0にアップデートすると表示崩れなどのバグが発生する可能性がある。

jQueryプラグインがあるなら注意が必要

自分が記述したコードはjQuery.htmlPrefilterを使用したコードがないから大丈夫と思っていても、jQueryプラグインのほうに該当する記述がある可能性もある。

そのためjQueryプラグインの利用者はバージョンを3.5.0にアップデートする際は注意が必要。

「jQuery.htmlPrefilterが正規表現を使用したHTMLタグの変換」という処理を使用しているケースは少ないので、コードをよく理解できていない場合はむやみにバージョンを3.5.0にアップデートするのは避けた方が良い。