javascript - IE 和 document.implementation.createDocument() - 哪些参数影响正确的 html nodename 大小写?

标签 javascript dom internet-explorer-9

Chrome 和 Firefox 喜欢 document.implementation.createDocument()。 IE9 没有,它要求提供 namespaceURI 和文档元素名称。这意味着调用类似 document.implementation.createDocument(' http://www.w3.org/1999/xhtml ','html',null) 的方法,但这会生成一个不使用官方 HTML 元素 nodeName 大小写的 html 文档的奇怪效果。它应该是全大写的,IE9 中的普通 document.createElement("a").nodeName 将返回“A”。使用 document.impl... 版本,[...].createElement("a").nodeName 返回“a”。

哪种参数的神奇组合会影响具有正确大小写规则的文档?

(问题原因:一百万个测试 DOM 片段的 QUnit 测试期望大写节点名称,并且会在这个非窗口元素工厂的所有地方抛出错误。这些测试都可以手动修复以忽略大小写,但是如果有一种方法可以让 IE 正常运行,而不是假装小写元素名称是可以的 - 根据规范,它们不是 - 我会在进行手动修复之前采用它)。

最佳答案

您需要改用 createHTMLDocument 方法,如下所示:

document.implementation.createHTMLDocument("").createElement("a").nodeName

(几乎与 DOM4 spec 保持一致)。

根据该规范,createDocument 创建一个 XML 文档,它不应将元素名称强制为大写。

关于javascript - IE 和 document.implementation.createDocument() - 哪些参数影响正确的 html nodename 大小写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15165016/

相关文章:

javascript - 如何在悬停而不是单击时切换 jQuery 响应式选项卡?

javascript - 如何让 <textarea> 识别按下 Enter 按钮是一个\n 字符?

DOM 元素的 JavaScript 最佳实践命名约定

Ie9 上的 Css 问题(非测试版)

javascript - IE 中的脚本错误

javascript - 无间隙和宽度动态变化内容的无限滚动文本

javascript - Backbonejs路由区分大小写问题

jquery - 如何判断一个特定的DOM元素是否可见?

javascript - 为什么元素从 DOM 中移除后在 IE 中为空?

javascript - HTML5 Canvas 页面在 IE9 中挂起