【问题标题】:JavaScript Method `createElement` (Potentially) Generates Invalid XHTML [duplicate]JavaScript方法`createElement`(可能)生成无效的XHTML [重复]
【发布时间】:2011-10-05 01:25:03
【问题描述】:

可能重复:
How to create xhtml elements with javascript
Creating a <br /> with javascript createElement?

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

document.createElement();
document.appendChild;
inputExample.type = "text";
…

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

document.createElement('input');

将导致&lt;input&gt;,而不是&lt;input /&gt;

虽然页面有一个

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">…</html>

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

【问题讨论】:

标签: javascript xhtml html


【解决方案1】:

当您调用 createElement 时,您正在创建一个 DOM 对象,不涉及任何标记。生成标记的唯一机制是innerHTMLouterHTML 属性,它们已在HTML5 中进行了一定程度的标准化。

这些属性应该使用 HTML 文档中的 HTML fragment serialization algorithm 或 XML 文档中的 XML fragment serialization algorithm 生成标记。也许属性应该被称为 innerMarkupouterMarkup

我认为没有任何方法可以调用一个序列化器或另一个专门使用脚本(例如从 HTML 文档中调用 XML 序列化器),尽管您可能能够解析来自 HTML 序列化器的琐碎标记和把它变成类似于 XHTML 的东西。

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

【讨论】:

    猜你喜欢
    • 2011-07-23
    • 2013-04-20
    • 1970-01-01
    • 1970-01-01
    • 2014-01-22
    • 2020-04-29
    • 2012-02-24
    • 2010-09-17
    • 2010-09-05
    相关资源
    最近更新 更多