<svg xmlns="http://www.w3.org/2000/svg" width="100%" xmlns:xlink="http://www.w3.org/1999/xlink" > <g id="sketch" class="sketch"> <rect x="0" y="0" width="100%" height="100%" fill="yellow" /> </g> <script> <![CDATA[ var xmlns="http://www.w3.org/2000/svg" Root=document.documentElement on_start(Root) function mouseUp(evt) { on_pen_up(Root); } function on_start(R){ var Attr={ "onmousemove":"mouseMove", "onmousedown":"add_line(evt)", "onmouseup":"mouseUp" } assignAttr(R,Attr) } function on_pen_down(R){ var Attr={ "onmousemove":"addPoint(evt)", "onmouseup":"on_pen_up(Root)" } assignAttr(R,Attr) } function on_pen_up(R){ var Attr={ "onmousemove":"null" } assignAttr(R,Attr) } function add_line(evt){ //if (evt.target.nodeName!="rect") return var C=document.createElementNS(xmlns,"polyline") var Attr={ "x":30, "y":180, "fill":'none', "stroke": '#44a', "id":'pl1', "stroke-width":2 } assignAttr(C,Attr) Root.appendChild(C) on_pen_down(Root) } function addPoint (evt) { element = document.getElementById('pl1') var point = element.ownerDocument.documentElement.createSVGPoint(); point.x = evt.clientX; point.y = evt.clientY; element.points.appendItem(point); } function assignAttr(O,A){ for (i in A) O.setAttributeNS(null,i, A[i]) } ]]> </script> <text font-size="12pt" x="50" y="20" id="t1">Click something to move it</text> <text font-size="12pt" x="80" y="40" id="t2">Click nothing to add something</text> </svg>
*update 7:44pm*
By simply making the id unique using a global variable count it was possible to draw multiple polylines [twitxr.com].