首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么setHTML(“<table><tr>.</tr></table>”);然后返回“<getHTML><tbody><tr>.</tr></tbody></table>”(Gwt)?

为什么setHTML(“<table><tr>.</tr></table>”);然后返回“<getHTML><tbody><tr>.</tr></tbody></table>”(Gwt)?
EN

Stack Overflow用户
提问于 2014-04-06 15:23:17
回答 2查看 92关注 0票数 0

我不明白Gwt setHTML & getHTML是如何工作的。这似乎不一致。

让我们看看这个例子:

代码语言:javascript
运行
复制
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值时,如果您认为它的值与我们设置的时间相同,但它没有,那么它可能会很混乱吗?

这种情况是独立于浏览器发生的,还是与浏览器无关?因为这很严重。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-06 15:55:56

这就是HTML的解析方式(浏览器应该如何解析它)。

在HTML4中, was defined (就SGML而言)需要一个TBODY子元素,而带有起始标记和结束标记的 is defined是可选的。

在HTML5 (它编码浏览器实际解析HTML的方式)中,这是相同的:在构建table时,如果浏览器找到了一个tr,那么在解析tr之前,它是一个tbody元素,就像最初有tbody一样。

票数 2
EN

Stack Overflow用户

发布于 2014-04-06 15:31:59

即使省略某些键或参数,浏览器也会尝试正确地格式化html。大多数现代浏览器将接受几乎所有您传递它的内容,而不会抱怨太多,但是它将解释您的意思并插入有效的HTML,而不是插入您想要的内容。

因此,is完全可以创建一个表,而不需要专门的tbody节点,但是浏览器会为您提供它。使用getHTML()后,您将访问已解析的、格式良好的标记。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22895956

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档