背景
在将公司一款使用 jQuery 的产品升级到最新的 jQuery 3.6 之后发现部分页面出现了排版异常的问题,查阅了通过 jQuery 生成的 HTML 和 jQuery 3.5 升级文档 后发现是因为 jQuery 从 3.5 版本开始区分 HTML 模式(HTML mode)和 XHTML 模式(XHTML mode) 来解析 HTML 了。
假设有这样一段 js 代码用于创建 jQuery 对象:
jQuery("<div/><span/>")
我们期望生成的 HTML 是这样的:
<div></div>
<span></span>
在 jQuery 3.5 以前生成的确实也是上述内容,但 3.5 版本开始,除非当前为 XHTML 模式,否则 jQuery 会生成这样的 HTML:
<div>
<span></span>
</div>
由于生成的 HTML 发生了变化,从而导致页面排版出现问题。