Qna*_*nan 5 javascript opera svg
如何在给定坐标的Opera中定位SVG中的元素?
elementFromPoint(x,y)适用于Firefox,但似乎与Opera失败,总是返回整个SVG而不是特定元素.
有人可能想知道为什么我需要它.好吧,仅仅是因为我想突出显示光标下的SVG元素,并且因为在使用鼠标移动之前,当添加/删除光标下的元素时,Opera不会触发任何事件.也就是说,当我添加一个新元素时,它在我稍微移动鼠标之前没有突出显示,这看起来不太好.
干杯,米哈伊尔.
在Opera中有SVG1.1的SVGSVGElement.getIntersectionList.
var element= document.elementFromPoint(pageX, pageY);
if (element.localName.toLowerCase()=='svg' && 'getIntersectionList' in element) {
var svgxy= Element_getPageXY(svg); // by the usual offsetLeft/offsetParent etc. method
var rect= svg.createSVGRect();
rect.x= pageX-svgxy[0];
rect.y= pageY-svgxy[1];
rect.width=rect.height= 1;
var hits= svg.getIntersectionList(rect, null);
if (hits.length>0)
element= hits[hits.length-1];
}
Run Code Online (Sandbox Code Playgroud)
[未经测试的代码,甚至可能有用.]