Ik dacht dat heel simpel was, maar het valt toch tegen. Ik wil de muispositie terugkrijgen ten opzichte van de positie van het element waar ik in zit. En wel volgens de DOM 2 spec, want ik ben bezig met js in een svg element, en daar lijkt het allemaal wat stricter te zijn.
zo krijg ik bijvoorbeeld niets terug uit event.x en event.y (in opera wel, maar hetzelfde als screenX en -Y). screenX en -Y geven wel wat terug, maar heb ik uiteraard niets aan. clientX en -Y ook, maar dat is tov van de hele client. Ik dacht daar even offsetLeft cq offsetTop vanaf te trekken, maar ook die zijn niet gedefinieerd (voor een svg element).
pageX en -Y geven hetzelfde als clientX en -Y
stukje code voor de liefhebbers:
(alleen in Fx 1.5 en Opera 9)
edit: layerX en -Y geven het goede resultaat in Fx, maar niet in Opera (het is ook geen DOM2)
zo krijg ik bijvoorbeeld niets terug uit event.x en event.y (in opera wel, maar hetzelfde als screenX en -Y). screenX en -Y geven wel wat terug, maar heb ik uiteraard niets aan. clientX en -Y ook, maar dat is tov van de hele client. Ik dacht daar even offsetLeft cq offsetTop vanaf te trekken, maar ook die zijn niet gedefinieerd (voor een svg element).
pageX en -Y geven hetzelfde als clientX en -Y
stukje code voor de liefhebbers:
code:
1
2
3
4
5
6
7
8
9
10
| <body>
<svg:svg width="400px" height="400px" viewBox="0 0 400 400" version="1.1" xmlns:svg="http://www.w3.org/2000/svg">
<svg:rect id="rect" x="0" y="0" width="400" height="400" fill="white" stroke="black"/>
<svg:script type="text/javascript">
document.getElementById('rect').onmousemove = function(e) {
window.status = e.x + ' ' + e.clientX + ' ' + e.pageX + ' ' + e.screenX;
}
</svg:script>
</svg:svg>
</body> |
(alleen in Fx 1.5 en Opera 9)
edit: layerX en -Y geven het goede resultaat in Fx, maar niet in Opera (het is ook geen DOM2)
[ Voor 30% gewijzigd door Verwijderd op 11-03-2006 11:30 ]