| <svg xmlns="http://www.w3.org/2000/svg" width="400" height="400" style="border: solid"> |
| <g> |
| <circle cx="350" cy="350" r="50" fill="green" onmousedown="startMove()"/> |
| </g> |
| <text x="200" y="50" text-anchor="middle">The circle should stay in the bottom-right corner</text> |
| <script> |
| var root = document.getElementsByTagName("svg")[0]; |
| var container = document.getElementsByTagName("g")[0]; |
| var circle = document.getElementsByTagName("circle")[0]; |
| |
| function move(evt) { |
| var matrix = container.getScreenCTM(); |
| var point = root.createSVGPoint(); |
| point.x = evt.clientX; |
| point.y = evt.clientY; |
| point = point.matrixTransform(matrix.inverse()); |
| circle.cx.baseVal.value = point.x; |
| circle.cy.baseVal.value = point.y; |
| } |
| |
| function startMove() { |
| container.addEventListener("mousemove", move, false); |
| root.addEventListener("mouseup", stopMove, false); |
| } |
| |
| function stopMove() { |
| container.removeEventListener("mousemove", move, false); |
| root.removeEventListener("mouseup", stopMove, false); |
| |
| if (window.testRunner) |
| testRunner.notifyDone(); |
| } |
| |
| if (window.testRunner) |
| testRunner.waitUntilDone(); |
| |
| if (window.eventSender) { |
| eventSender.mouseMoveTo(350, 350); |
| eventSender.mouseDown(); |
| eventSender.mouseMoveTo(200, 200); |
| eventSender.mouseUp(); |
| } |
| </script> |
| </svg> |