- From: Boris Zbarsky <bzbarsky@MIT.EDU>
- Date: Wed, 08 Sep 2010 00:41:09 -0400
Consider this testcase:
<!doctype html>
<html>
<body>
<canvas id="c" width="200" height="200"></canvas>
<script>
try {
var c = document.getElementById("c"),
t = c.getContext("2d");
t.moveTo(100, 100);
t.lineTo(NaN, NaN);
t.lineTo(50, 25);
t.stroke();
} catch (e) {alert(e); }
</script>
</body>
</html>
Behavior in the spec seems to be undefined (in particular, no mention is
made as to what the canvas API functions are supposed to do if
non-finite values are passed in). Behavior in browsers is:
Presto: Throws NOT_SUPPORTED_ERR on that lineTo(NaN, NaN) call.
Gecko: Throws DOM_SYNTAX_ERR on that lineTo(NaN, NaN) call.
Webkit: Silently ignores the lineTo(NaN, NaN) call, and then
draws a line from (100,100) to (50, 25).
Seems like the spec needs to define this.
-Boris
P.S. This isn't a hypothetical issue; this came up in a page that was
trying to graph things using canvas and ending up with divide-by-0 all
over the place. It "worked" in webkit (though not drawing the right
thing, so much). It failed to draw anything in Presto or Gecko.
Received on Tuesday, 7 September 2010 21:41:09 UTC