【问题标题】:Is the DOCTYPE relevant only to the markup or also to the DOM?DOCTYPE 是仅与标记相关还是与 DOM 相关?
【发布时间】:2010-01-25 16:38:21
【问题描述】:

文档的<!DOCTYPE> 声明(和内容类型)在何种抽象级别仍然相关?

例如,如果我正在使用 XHTML,但想使用 XHTML 中不可用的元素 - 一个简单的例子是 iframe - 以编程方式使用 JavaScript 添加元素会是不好的做法吗?还是我必须不使用 iframe 或不使用 XHTML?

验证器仍然会验证文档——因为它不执行 JS——但是修改 DOM 是否存在理论上的错误,因此它不再与 <!DOCTYPE> (和返回的内容类型)一致,或者<!DOCTYPE> 是否仅与文本形式的标记相关?

附录

更具体地说,我的问题不是关于 <!DOCTYPE> 将如何影响 JavaScript 或 JavaScript 将如何执行,而是它应该如何影响开发人员在以编程方式添加、删除和修改元素方面的选择。

我的例子是,如果客户既想要 XHTML 合规性又想要 WYSIWYG 编辑器,你会如何处理通常带有 WYSIWYG 编辑器的 iframe?您是否应该将其从标记中删除,仅在 JS 中删除 document.appendChild() ?或者您是否告诉您的客户他们必须在两者之间进行选择 - iframe 或 XHTML?

【问题讨论】:

  • 这是从实际的角度来看,还是从符合标准的阿谀的角度来看?
  • 您是为了确保该页面符合标准,还是因为客户或老板施加了一些限制?在前一种情况下,是的,你这样做是在欺骗自己。
  • @Mike - 我更倾向于标准痴迷类型,但我对硬币的两面都感兴趣。不过,我对标准方面更感兴趣。
  • @Amarghosh - 更多是为了标准;我有一些没有验证的个人页面,用 JS 添加元素的想法是一种思想实验……但在后者的情况下,你不会还在欺骗你的客户或老板吗? ;)
  • @Richard 是的,但谁不这样做;)

标签: javascript xhtml


【解决方案1】:

DOCTYPE 定义在标准术语中描述了标记。因此,一旦用户代理解析了标记,DOCTYPE 就无关紧要了在这方面。实际上,DOCTYPE 也会触发浏览器行为,因此您对 DOM 进行的动态处理会受到 DOCTYPE 的影响。

【讨论】:

  • 我已经编辑了我的问题,以说明我的问题不是关于 DOCTYPE 是否会影响 JavaScript,而是关于它应该如何影响我打算用 JavaScript 做的事情。
  • 但他的观点是,如果您使用 JavaScript 在浏览器不期望的地方插入 iframe,因为它使用某种“严格”模式,可能会发生奇怪的事情。所以我会说不要那样做。
【解决方案2】:

Eesh,我明白你的意思。如果您的某个客户认为网页不是 XHTML 就没有任何好处,那么说服他们放弃它可能会很棘手。

不过值得一试:花时间编写 JavaScript 来插入在 XHTML 中无效的元素似乎毫无意义,而不仅仅是使用允许元素的 doctype。

<iframe> 仍然允许在 XHTML 1.0 过渡中,不是吗?这是一个选项吗?

【讨论】:

  • 是的,iframe 在 XHTML 过渡中验证。
  • 我不认为这是一个很好的实用解决方案......也就是说这是一个很好的解决方案,我没有考虑。
【解决方案3】:

我绝不是规则或标准的狂热者,但是将 HTML 元素插入不支持该元素的 doctype 是愚蠢的,因为它可能会导致在路上不可能的微妙问题> 进行调试。

所以:它可能会起作用,而且没问题。 (您的老板或客户永远不会发现,因为验证器只能在基本 HTML 上运行)。

我仍然不建议这样做。

【讨论】:

  • 很抱歉,“未来的微妙问题”同样可能发生在 100% 有效代码的情况下。它们通常是浏览器错误的结果。
  • 也许可以,但是浏览器错误大多可以通过在网上查看或在 SO 上询问来识别,因为它们已经发生在其他人身上。错误或奇怪的行为,因为您在 doctype abc 中使用 xyz 不能。正如我所说,它可能会正常工作,并且以这种方式应用一些补丁或解决方法不会有问题。但我不会向任何人推荐它作为一种工作方式。
猜你喜欢
  • 2021-09-05
  • 2010-09-06
  • 1970-01-01
  • 2011-06-26
  • 1970-01-01
  • 1970-01-01
  • 2021-08-31
  • 1970-01-01
  • 2020-01-16
相关资源
最近更新 更多