2009-11-10 65 views
2

HTML元素(下面的问题是假设性的,但为了阅读方便,我会问,好像我其实这样做)具有双重属性

我建设HTML 5网站不幸的是, IE不支持“header”和“nav”等HTML5元素。我希望它会像通用的“div”一样对待它们,但事实并非如此。它只是表现为他们不在那里(意味着没有CSS应用于他们)。

我想通过为IE提供一些动态转换的HTML来解决这个问题。我只使用常规的字符串替换函数(PHP的,这不是问题)与

<div class="header> 

等等,以取代

<header> 

所有出现(一个我会转换CSS因此)。这应该是好的,但这个是什么:

<header class="foo"> 

用最简单的代码替换,这将成为

<div class="header" class="foo"> 

那是合法的HTML?那么这个属性会变成“header foo”还是其中的一个呢?

(是的,我知道,以正常的方式来获得多个类是

<div class="header foo"> 

回答

2

如果将它作为XHTML进行处理,它将会格式不正确,并且会引发错误,我期望任何符合要求的HTML解析器都可以执行此操作。

+0

我必须对此进行测试才能确定,但​​是您确定它实际上会引发异常,并且不仅仅是不愿意或选择最接近内容的那个? – thismat 2009-11-10 22:16:09

6

不行,你只能有一个类属性 - 这样的:

<div class="header foo"> 

如果您有两个或更多的类属性,我认为它只是使用第一个。

+0

一类属性,但是应用到多个类相同的元素。这将是你以后的。 – thismat 2009-11-10 22:09:54

+0

寻找*说*你不能有2的规格的一部分是惊人的困难...我猜DTD <!ATTLIST不显示任何重复...如果甚至允许... – Greg 2009-11-10 22:33:39

+0

是的,它是有些人认为只有*有* DTD:SGML和XML(HTML和XHTML构建的标准)都不允许具有相同名称的多个属性。 – bobince 2009-11-10 23:03:46

1

虽然它依赖于启用JavaScript的客户端上,还有让IE与新的HTML5元素更正常工作的方法:

http://remysharp.com/2009/01/07/html5-enabling-script/

+0

非常有趣和有益的。我会尝试的(尽管我必须说服其他人让IE浏览器没有javascript)。 – 2009-11-10 22:37:34

+0

它总是有这样的东西的问题......涉及到有多少用户在那里与旧的IE浏览器和没有JavaScript相比,所有其余的用户base ... – HorusKol 2009-11-11 03:51:47