
使用< sup>标签:
first text node<div> This is a parent div <sup>superscript tag starts IN parent</div> text OUTSIDE node of parent
使用< s>标签:
first text node<div> This is a parent div <s>strikethrough tag starts IN parent</div> text OUTSIDE node of parent
正如你在第一个例子中看到的,浏览器会自动关闭< sup>父母关闭之前的标签。但是,在第二个示例中,浏览器似乎关闭了< s>标记在其父级结尾之前,然后插入另一个起始< s>在父母之后。
我浏览了<s>和<sup>规范 – 我似乎找不到任何具体的浏览器如何解释和处理未封闭的标签。至少没有什么可以解释这个功能。
我想知道这一点的原因是我正在使用的实时标记解析器 – 用户可能在解析源之前不能完成标签。
我想知道浏览器如何处理这些事情,所以我可以为这个用例编写代码。目前,浏览器以不同的方式处理不同的标签(如我的示例所示)。
有谁知道浏览器为什么这样做?或者至少知道一个行为一致的元素列表?
解决方法 感谢@Ankith Amtange我发现了 explanation发生了什么。我会在这里写下来给未来的读者。< s>标签由于是一个格式化元素而延伸超过其父项。 < sup>标签会自动关闭,因为浏览器期待关闭< / sup>标签在父元素结束之前。
HTML解析器在其堆栈中对待元素不同,它们分为以下类别(source):
Special elements
The following elements have varying levels of special parsing rules:HTML‘saddress,applet,area,article,asIDe,base,baseFont,bgsound,blockquote,body,br,button,caption,center,col,colgroup,dd,details,dir,div,dl,dt,embed,fIEldset,figcaption,figure,footer,form,frame,frameset,h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,HTML,iframe,img,input,isindex,li,link,Listing,main,marquee,Meta,nav,noembed,noframes,noscript,object,ol,p,param,plaintext,pre,script,section,select,source,style,summary,table,tbody,td,template,textarea,tfoot,th,thead,Title,tr,track,ul,wbr,andxmp;MathML‘smi,mo,mn,ms,mtext,andannotation-xml; andSVG‘sforeignObject,desc,andTitle.Formatting elements
The followingHTMLelements are those that end up in the List of active formatting elements:a,b,big,code,em,Font,i,nobr,s,small,strike,strong,tt,andu.Ordinary elements
All other elements found while parsing anHTMLdocument.
说明(来自链接规范):
最常被讨论的错误标记示例如下:
<p>1<b>2<i>3</b>4</i>5</p>
这个标记的解析直到“3”。在这一点上,DOM看起来像这样:
─HTML ├──head └──body └──p ├──"1" └──b ├──"2" └──i └──"3"
这里,开放元素的堆栈有五个元素:HTML,body,p,b和i。活动格式元素的列表只有两个:b和i。插入模式是“体内”。
在收到标签名称为“b”的结束标签令牌后,调用“采用代理算法”。这是一个简单的情况,因为格式化元素是b元素,并且没有最远的块。因此,开放元素的堆栈最终只有三个元素:HTML,body和p,而活动格式化元素的列表只有一个:i。此时DOM树未修改。
下一个令牌是一个字符(“4”),触发了活动格式化元素的重建,在这种情况下只是i元素。因此,为“4”文本节点创建一个新的i元素。在接收到“i”的结束标记令牌之后,插入“5”文本节点,DOM看起来如下:
─HTML ├──head └──body └──p ├──"1" ├──b │ ├──"2" │ └──i │ └──"3" ├──i │ └──"4" └──"5"总结
以上是内存溢出为你收集整理的未关闭/被错误的HTML标签延伸超过其父级全部内容,希望文章能够帮你解决未关闭/被错误的HTML标签延伸超过其父级所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)