考虑以下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)?
答案 0 :(得分:0)
HTML5 specification说明了progress element:
value和max属性(如果存在)必须具有有效浮点数的值。
如果字符串包含以下内容,则该字符串是有效的浮点数:
可选地,“ - ”(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浏览器正确解释。