【问题标题】:HTML and GUIDs in IE8,9,10IE8、9、10 中的 HTML 和 GUID
【发布时间】:2012-11-21 20:29:17
【问题描述】:

我有一个 UL 列表,其中每个 LI 子标签都有一个名为“value”的属性,它的值是一个 GUID。 我发现对于一个特定的 GUID,IE 只呈现 GUID 的第一部分(例如:如果 guid 是 93365457-30bc-45e4-a85a-b74728ec83fc 那么“值”属性的值就是 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 和 Win 8 上的 IE 10 上测试并复制了这个问题

是否有任何已知的解决此问题的方法?

我在使用 MS Project Server 2010 和 Sharepoint 2010 时遇到了这个问题(PJS 2010 查找类型自定义字段被呈现为包含 ul 的 iframe,其中 LI 标记是查找项和“value”属性具有每个查找项的唯一 ID)。

后期编辑:

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

【问题讨论】:

  • “是否有任何已知的解决此问题的方法?”停止编写无效的 HTML。
  • 我不是在写它...阅读最后一段...

标签: html internet-explorer guid


【解决方案1】:

根据 html5 草案,你确实可以有一个 li 的 value 属性,但仅限于 ordered 列表中的那些 (&lt;ol&gt;):

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

来源:li spec on w3c

此外:

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

来源:value attribute for li on w3c

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 其他浏览器或属性不是我拥有的选项。 IE 将继续存在,我无法控制 html 呈现。但我理解这个问题。感谢您的宝贵时间。
    • 但是你必须如何与那个 DOM 交互呢?你能以某种方式改变它(至少使用 javascript)吗?
    • 我无法控制组件的实际 html 呈现(在我的场景中),但我可以包含我自己的 JS 文件来实现我所追求的功能。我通过尝试根据某些条件显示/隐藏查找项(又名 LI)而遇到了这个问题。我正在使用该值(也就是查找项的唯一 ID)来执行此操作。
    猜你喜欢
    • 1970-01-01
    • 2015-06-07
    • 1970-01-01
    • 2012-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-14
    相关资源
    最近更新 更多