JavaScript方法`createElement`(可能)生成无效的XHTML

ter*_*cia 3 html javascript xhtml html5

可能重复:
如何使用javascript 创建xhtml元素
使用javascript createElement创建<br />?

我正在使用JavaScript编程生成表单,例如:

document.createElement();
document.appendChild;
inputExample.type = "text";
…
Run Code Online (Sandbox Code Playgroud)

但我意识到JavaScript生成的自闭[X] HTML/XML元素不适用,即

document.createElement('input');
Run Code Online (Sandbox Code Playgroud)

会导致<input>,而不是<input />.

虽然页面有一个

<!DOCTYPE html>
Run Code Online (Sandbox Code Playgroud)

<html xmlns="http://www.w3.org/1999/xhtml">…</html>
Run Code Online (Sandbox Code Playgroud)

并且是浏览器扩展的一部分,因此使用MIME类型进行解释text/html,因此不需要在语法上符合XHTML,我想知道JavaScript元素创建生成有效XHTML的方法.有没有办法做到这一点?

Rob*_*obG 5

当您调用createElement时,您正在创建一个DOM对象,不涉及标记.生成标记的唯一机制是innerHTMLouterHTML属性,这些属性在HTML5中已经在某种程度上标准化.

这些属性应使用HTML文档中的HTML片段序列化算法XML文档中的XML片段序列化算法生成标记.也许属性应该被称为innerMarkupouterMarkup.

我认为没有任何方法可以调用一个序列化程序或另一个专门使用脚本(例如从HTML文档中调用XML序列化程序),尽管您可以从HTML序列化程序中解析琐碎的标记并将其转换为近似于XHTML的东西.

顺便说一句,据我所知,没有"XHTML5"这样的东西.HTML的当前标准是版本4.01.HTML5是一个可能永远不会标准化的工作草案.还有XHTML 1.0和XHTML 1.1在文档中用作DOCTYPE,这些文档几乎总是作为文本/ HTML提供(将其作为其他任何不合理的服务),因此被视为HTML文档.