为什么 Internet Explorer 不将 CSS 应用于"invalid"元素?



这适用于chromium(我假设所有其他主要浏览器)

-.html-

<invalid></invalid>

-.css-

invalid {
    color: red;
}

<invalid>表示无效元素(不是 HTML 标准的一部分)

下面是一个示例:http://jsfiddle.net/myhonor/4H7Hj/

但是当我在IE中尝试此操作时,它不起作用。

为什么会这样,有没有办法解决这个问题(这是 DTD 的事情吗?

这就是Internet Explorer的工作方式,包括版本8。要修复它,只需使用无效元素的名称调用 document.createElement

document.createElement('invalid');

这是您更新的 jsFiddle。这与你看到的所有HTML5 shivas的想法相同。而且,正如其他人已经建议的那样,编写有效的HTML通常是最好的解决方案:)

版本 9 之前的 IE 不会自动创建与它在标记中无法识别的任何标签对应的 DOM 元素。这是HTML5元素在较旧的IE中不起作用的主要原因,这些IE需要包含HTML5 siv才能工作。

在这种情况下,你

甚至不是在写HTML5;你是在写你自己的标记语言,这与HTML完全无关。解决此问题的最简单方法是实际编写 HTML...或者,如果您坚持制作自己的标签,则必须按照Minitech的演示手动创建它们,但希望完全自己连接它们。1


1浏览器无法识别为 HTML 一部分的元素通常在 DOM 中创建为HTMLUnknownElement对象(这包括 IE9 及更高版本),据说这样做是为了向前兼容(例如 HTML5)。这些对象具有HTMLElement的基本属性,但除此之外,没有太多其他内容可以继续......

最新更新