为富文本区域生成的HTML:#document是什么?

6

我可以在Chrome开发者工具中看到,GWT的RichTextArea部件生成的HTML大致如下:

<iframe class="GCJ2VDKDEI" style="height: 40px; ">
  #document
    <html>
      <head></head>
      <body>entered text</body>
    </html>
</iframe>

有人能描述一下它是如何工作的吗?嵌入在<iframe>中的页面如何可供用户编辑(看起来和文本区域一样)?

我特别想知道那个奇怪的#document是什么东西。这是我第一次见到这样的东西,谷歌也没有给我答案 :(。

1个回答

5
这是iframe内文档的Document节点。所有Document节点都有一个nodeName属性为"#document",可以通过检查document.nodeName来查看。Chrome的开发者工具可能通过将contentDocument属性的扩展作为iframe扩展的子级来处理iframe。
至于文档是否可编辑,WYSIWYG编辑器经常使用iframe进行可编辑内容。所有当前浏览器都允许通过contenteditable属性在任何元素上内置编辑功能,也可以通过document.designMode属性在文档级别上进行编辑。

请问您能解释一下什么是“扩展”吗?也许这是我需要完全理解您答案的第一部分。先谢谢了。 - Piotr Sobczyk
@PiotrSobczyk:这可能是一个错误的术语。我所说的“扩展”是指在Chrome开发者工具的元素选项卡中显示DOM节点及其所有子节点的方式。当它遇到一个iframe时,它会像任何其他元素一样显示该元素,但也会将iframe内的文档显示为iframe元素的子节点。 - Tim Down

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接