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

Sam*_*uel 3 html css internet-explorer

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

-html-

<invalid></invalid>
Run Code Online (Sandbox Code Playgroud)

-css-

invalid {
    color: red;
}
Run Code Online (Sandbox Code Playgroud)

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

这是一个例子:http://jsfiddle.net/myhonor/4H7Hj/

但是当我在IE中尝试这个时,它不起作用.

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

Bol*_*ock 5

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

在这种情况下,你甚至不写HTML5; 你正在编写自己的标记语言,它与HTML完全无关.解决此问题的最简单方法是实际编写HTML ...或者如果您坚持编写自己的标记,则必须在minitech演示时手动创建它们,但希望完全依靠自己编写它们.1


1 作为HTML的一部分,浏览器无法识别的元素通常作为HTMLUnknownElementDOM中的对象(包括IE9和更新版本)创建,据说这是为了向前兼容性(参见HTML5).这些对象具有基本属性HTMLElement,但除此之外没有太多可继续...


Ry-*_*Ry- 5

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

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

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

  • 有趣的是,解释原因的答案对于询问原因的问题毫无用处.可能不太有用,但根本没有用? (2认同)