如何在给定坐标的情况下在 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];
}
[未经测试的代码,甚至可能有效。]
关于javascript - 通过坐标在 Opera 的 SVG 中定位元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2259613/