我在嵌套的代码周围看到一些奇怪的行为
鉴于:
<p>
<p>
<p>
<p>
<p>
<p>
</p>
</p>
</p>
</p>
</p>
</p>
在Chrome中,这会导致
<p>
</p><p>
</p><p>
</p><p>
</p><p>
</p><p>
</p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
也就是说,它关闭开始标记并打开结束标记。我(当然)听说过“自动关闭标签”;我从没听说过“自动打开标签”。
IE11采用了一种不同的(可以说是更错误的)方式:
<p>
<p>
<p>
<p>
<p>
<p>
</p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
因此,它不会自动关闭打开的标记,但它会自动打开关闭的标记,从而导致不平衡的DOM树。
无论如何,我很好奇解决这个问题的正确途径是什么;我应该打开Chrome和IE错误跟踪器的问题吗?我不是特别精通W3C规范,我应该去哪里尝试并找到正确的行为(除了之外,我不知道任何标签)
不管它值多少钱,我意识到嵌套
编辑:我错了https://jsbin.com/ripaxe/5/edit?html,js,输出。原来
innerHTML
依赖于浏览器。我不知道。
测试用例使用innerHTML来显示标记的序列化。毫不奇怪,IE的做法与其他浏览器不同,但这两种浏览器对标记的表示本身都是错误的。
Chrome(和Firefox)插入显式
但是不需要显式的结束标记,因此IE简单地选择不插入结束标记来匹配任何开始标记。这并不意味着有任何嵌套正在进行——所有的
p
元素仍然是兄弟姐妹,您可以通过以下事实来验证这一点:document.query选择器('p p')
返回null和document.query选择器('p: nth-child(11): last-child')
返回由最后一个表示的元素
当然,原始标记中的结束标记是保留的,但是除了第一个结束标记外,其他所有标记都与它们自己的开始标记相匹配(这次不包含空格)的原因在“为什么不匹配”中描述
p
元素的结束标记是可选的,这也是为什么两种表示法都是同样有效的(实际上,在功能上是等效的)HTML片段的原因。因此,IE所做的并没有错,但它确实让依赖innerHTML属性的作者感到头疼,因为它做的事情不同。
但这就是为什么不应该依赖innerHTML的原因。
我的Java程序看起来像: 输出为:<代码> 因为我使用的是JasperReports和html样式,只允许我想要的输出。如何做到这一点?Transformer或DocumentBuilderFactory是否有任何输出属性可以进行想要的输出?
在页面中收集各种链接后,我点击这些链接并将其收集成汤。现在的问题是,链接在新标签中打开。我想在代码打开新标签中的下一个链接之前关闭标签。下面是代码片段。收完汤后,请帮我把每个标签关上。 我用python 3.7硒铬驱动
模板引擎支持标签的多层嵌套功能,可以对标签库的标签指定可以嵌套。 系统内置的标签中,volist、switch、if、elseif、else、foreach、compare(包括所有的比较标签)、(not)present、(not)empty、(not)defined等标签都可以嵌套使用。例如: <volist name="list" id="vo"> <volist name="vo['
请参考:http://www.kancloud.cn/manual/thinkphp/1817
模板引擎支持标签的多层嵌套功能,可以对标签库的标签指定可以嵌套。 系统内置的标签中,volist、switch、if、elseif、else、foreach、compare(包括所有的比较标签)、(not)present、(not)empty、(not)defined等标签都可以嵌套使用。例如: <volist name="list" id="vo"> <volist name="vo['
模板引擎支持标签的多层嵌套功能,可以对标签库的标签指定可以嵌套。 系统内置的标签中,volist、switch、if、elseif、else、foreach、compare(包括所有的比较标签)、(not)present、(not)empty、(not)defined等标签都可以嵌套使用。例如: {volist name="list" id="vo"} {volist name="vo['