我不明白Gwt setHTML & getHTML
是如何工作的。这似乎不一致。
让我们看看这个例子:
myInlineHtml.setHTML(SafeHtmlUtils.fromSafeConstant("<table><tr><td>Test</td></tr></table>"));
System.out.println(myInlineHtml.getHTML());
输出:"<table><tbody><tr><td>Test</td></tr></tbody></table>"
显然,当我们为myInlineHtml
设置html时,我们没有<tbody></tbody>
,但是当我们从myInlineHtml
设置getHTML
时,Gwt包含了<tbody></tbody>
。
为什么会发生这种情况,因为当您想获得Html值时,如果您认为它的值与我们设置的时间相同,但它没有,那么它可能会很混乱吗?
这种情况是独立于浏览器发生的,还是与浏览器无关?因为这很严重。
发布于 2014-04-06 15:55:56
这就是HTML的解析方式(浏览器应该如何解析它)。
在HTML4中, was defined (就SGML而言)需要一个TBODY
子元素,而带有起始标记和结束标记的 is defined是可选的。
在HTML5 (它编码浏览器实际解析HTML的方式)中,这是相同的:在构建table
时,如果浏览器找到了一个tr
,那么在解析tr
之前,它是一个tbody
元素,就像最初有tbody
一样。
发布于 2014-04-06 15:31:59
即使省略某些键或参数,浏览器也会尝试正确地格式化html。大多数现代浏览器将接受几乎所有您传递它的内容,而不会抱怨太多,但是它将解释您的意思并插入有效的HTML,而不是插入您想要的内容。
因此,is完全可以创建一个表,而不需要专门的tbody节点,但是浏览器会为您提供它。使用getHTML()
后,您将访问已解析的、格式良好的标记。
https://stackoverflow.com/questions/22895956
复制相似问题