HTML5进度范围的最大值和值:太大的值?

时间:2015-06-22 22:20:20

标签: javascript html5 numbers progress-bar specifications

考虑以下MWE:

<!DOCTYPE html>
<html>
<head>
<title>Progress test</title>
</head>

<body>

<progress id="progress"></progress>

<script>
progress.max = 10000000000;
progress.value = 10000000000 / 2;
</script>

</body>
</html>

以前用于Internet Explorer,Mozilla Firefox,Google Chrome和Opera。但今天我意识到它不再适用于谷歌浏览器;显然,值10000000000和10000000000/2太大了。

这让我想知道官方规范对此有何看法。他们是否保证这么大的数字应该有效(在这种情况下,谷歌Chrome中存在一个错误),或者我的数字是否超过保证可行的最大值(在这种情况下,我很幸运,它在IE中有效)和FF)?

1 个答案:

答案 0 :(得分:0)

HTML5 specification说明了progress element

  

value和max属性(如果存在)必须具有有效浮点数的值。

floating-point number定义为:

  

如果字符串包含以下内容,则该字符串是有效的浮点数:

     

可选地,“ - ”(U + 002D)字符。      按给定顺序执行以下一项或两项操作:          一系列一个或多个ASCII数字。              一个单一的“。” (U + 002E)字符。              一系列一个或多个ASCII数字。      可选:          可以是“e”(U + 0065)字符或“E”(U + 0045)字符。          可选地,“ - ”(U + 002D)字符或“+”(U + 002B)字符。          一系列一个或多个ASCII数字。

后来,解析浮点数值的算法应该从 IEEE 754双精度浮点数的集合中选择一个值。

根据问题:

biggest integer that can be stored in a double

IEEE 754双精度的最大值约为1.8×10 ^ 308。因此,您的号码10000000000在很大程度上足以用IEEE 754双精度表示,并且应该由任何有效的HTML5浏览器正确解释。