javascript - 通过坐标在 Opera 的 SVG 中定位元素

标签 javascript svg opera

如何在给定坐标的情况下在 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/

相关文章:

javascript - 为什么我在 http 之后在 angularjs 变量中得到空值

javascript - jquery $.post 解释

xslt - 在opera中将xsl应用到xsd时出现问题

javascript - Opera:无法从 window.open() 获取加载事件

CSS 变换旋转文本在 Opera 27 Mac 中消失

javascript - 如何使用cheerio js检查元素是否具有重复的属性

javascript - jstree 显示原始 json,而不是树

css - svg 样式相互干扰

svg - Webpack:无法使用文件加载器显示 SVG 图像(svg 解析错误)

html - 使 SVG 文本元素绝对定位(即不占用空间)?