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にアップデートするのは避けた方が良い。