- From: Tab Atkins Jr. <jackalmage@gmail.com>
- Date: Fri, 26 Aug 2011 18:53:28 -0700
- To: Dean Jackson <dino@apple.com>
- Cc: Øyvind Stenhaug <oyvinds@opera.com>, www-svg@w3.org
On Fri, Aug 26, 2011 at 6:36 PM, Dean Jackson <dino@apple.com> wrote: > On 24/08/2011, at 10:49 PM, Øyvind Stenhaug wrote: >> Units >> >> This doesn't seem to consider what happens if the unitType argument is a zero length, e.g. SVG_LENGTHTYPE_EMS when 1em=0px. >> >> <svg xmlns="http://www.w3.org/2000/svg" font-size="0"> >> <rect width="100px"/> >> <script type="application/ecmascript"> >> onload = function() { >> try { >> var width = document.querySelector('rect').width.baseVal; >> width.convertToSpecifiedUnits(width.SVG_LENGTHTYPE_EMS); >> alert(width.valueInSpecifiedUnits + ' ' + width.value); >> } catch(e) { >> alert(e); >> } >> } >> </script> >> </svg> >> >> Gecko and Presto give "Infinity NaN", failing to "[p]reserve the same underlying stored value". >> >> WebKit throws NOT_SUPPORTED_ERR, although the spec only says it's "[r]aised if unitType is SVG_LENGTHTYPE_UNKNOWN or not a valid unit type constant (one of the other SVG_LENGTHTYPE_* constants defined on this interface)". >> >> (When trying to convert a zero value, Presto gives "0 0", Gecko "NaN NaN" and WebKit still throws.) > > The WebKit behaviour here is a bug which is easily fixed, but what values do you suggest we return? I believe the specced behavior is buggy, and everyone should throw when the original length is non-zero and the specified unit is zero-length. When the original length is zero, the new value should be zero in the new unit. If there's compat impact there, I suggest silently failing (as if you attempted to specify an invalid value, which "Infinityem" is), but throwing is preferable to me. ~TJ
Received on Saturday, 27 August 2011 01:54:24 UTC