HTML and GUIDs in IE8,9,10



我有一个UL列表,其中每个LI子标记都有一个名为"value"的属性,它的值是GUID。我发现,对于一个特定的GUID,IE只呈现GUID的第一部分(例如:如果GUID是93365457-30bc-45e4-a85a-b74728ec83fc,则"value"属性的值仅为93365457。对于其他GUID,该值将正确呈现。

你可以打开这个简单的html:进行测试

<!DOCTYPE html>
<html>
<head>
<title>Guid on IE test</title>
<meta charset="utf-8">
</head>
<body>
<ul>
<li value="79c8c2b5-ea63-4a4e-8b2e-c55c8f814e83">1</li>
<li value="93365457-30bc-45e4-a85a-b74728ec83fc">2</li>
<li value="352c32a6-596e-4897-b297-7b5fb4a06bb1">3</li>
</ul>
</body>
</html>

第一个和第三个li得到了正确的渲染,但第二个没有。我已经通过使用IE的开发工具和javascript读取值来检查了这一点。

我已经在Win2008上的IE 8,9和Win8 上的IE 10上测试并复制了这个问题

这个问题有什么已知的解决方案吗?

我在使用MS Project Server 2010&Sharepoint 2010(PJS 2010查找类型自定义字段被呈现为iframe,该iframe包含一个ul,如上面列出的ul,其中LI标记是查找项,"value"属性具有每个查找项的唯一id)。

后期编辑:

显然,第一部分是数字的所有GUID/UUID最终都会被截断。第一部分是字母数字的部分不是

根据html5草案,您确实可以为li拥有值属性,但只能在有序列表(<ol>)内:

如果元素是ol元素的子元素:value

来源:w3c上的li规范

此外:

value属性(如果存在)必须是一个有效的整数,给出列表项的序号值。

源:w3c上li的值属性

那么,这可能就是IE没有正确检索值的原因:在这种情况下,它不需要这样做。

标准要求li元素的value属性是一个数字。您将看到,任何第一部分仅由数字组成的GUID都将以相同的方式运行。我认为IE所做的是试图将其解析为一个数字,如果它没有成功,那么它要么保持原样,要么如果第一部分是一个数字那么它只保留它。

如果正如你所说,源代码是由MS软件生成的,那么我想你无能为力(除了使用另一个浏览器)。否则,您可以简单地使用自定义属性而不是value

最新更新