jQuery为何将<br/>转换为<br>?HTML5页面技术问题咨询
为啥加载HTML后
<br/>变成了<br>? 嘿,这个现象完全是HTML5规范的正常操作,一点都不奇怪,我给你唠明白背后的原因:
HTML5对空元素的统一规范:像
<br>、<img>这种没有闭合内容的“空元素”,HTML5允许两种写法——XML风格的<br/>和原生HTML的<br>。当浏览器把你输入的HTML文本解析成DOM对象时,会自动按照HTML5的标准格式做规范化处理,把空元素标签里的斜杠去掉,所以你看到的DOM对象里就变成了<br>。DOM存储的是结构而非原始字符串:DOM内部存的是元素的结构信息,不是你输入的原始文本。当你后续要获取元素的HTML表示(比如用
outerHTML),浏览器会按照标准HTML语法重构输出,而不是保留你一开始写的带斜杠的格式。
给你段代码验证下就懂了:
// 你加载的原始HTML文本 const rawHtml = '<p>第一行<br/>第二行</p>'; // 创建容器加载内容 const wrapper = document.createElement('div'); wrapper.innerHTML = rawHtml; // 查看解析后的br元素 console.log(wrapper.querySelector('br').outerHTML); // 输出肯定是 "<br>" 而非 "<br/>"
放心哈,这不是啥问题,两种写法功能完全等价,不管是渲染还是后续DOM操作都不受影响,就是浏览器在帮你做规范统一而已~
内容的提问来源于stack exchange,提问作者Kevin Lindmark
相关产品推荐
相关产品推荐

