如何检测SVG区域的任何位置的颜色
How to detect the color of any position of an SVG area
在SVG区域(不是画布)中,我需要使用javascript确定特定坐标(x,y)位置的颜色。大致是这样的:
getColor (mySvgArea, x, y);
通常在html中,如果链接被访问过,那么它们会以不同的颜色绘制。当然,这样的事情在SVG中也是可能的,而且很久以前就意识到,如果你能弄清楚颜色是什么,那就是隐私泄露,并且需要花费很多精力来修复这个问题。
如果你被允许在一般坐标上读取颜色,它将重新打开隐私泄漏,所以你永远不会有办法在图像之外这样做。
图像方式是将SVG放在<image>
标记中,然后将其加载到画布中。浏览器可以通过以下两种方式来防止隐私泄露:a)污染画布,这样一旦SVG数据加载到画布中(目前是Webkit),您就无法从画布中读取数据;b)限制SVG图像功能,这样它们就不会通过禁用链接着色(Firefox)来泄露隐私。
已经有一个stackoverflow的答案与一个例子,显示复制SVG到画布。如果你用的是火狐浏览器,你就可以把颜色读掉了。
我知道这是一个古老的话题,但是根据您的情况还有另一种方法。使用SVG,您可以使用Document.elementFromPoint
获得元素,也可以通过隐藏顶部元素并再次调用elementFromPoint
获得所有底层元素。颜色和其他属性都可以从这里得到。它本身并没有真正给你一个颜色,但它比画布快,在选定的情况下工作得很好。
相关文章:
- 函数参数中的数据与指定变量之间的任何性能差异
- 有没有任何方法可以将控制器从文件加载到ui路由器$stateProvider中
- onkeyup无法动态创建多个文本区域
- 如何在谷歌地图中突出显示一个州点击一个国家的任何区域
- 检查任何输入或文本区域中是否存在非法字符
- 任何比较两个不同位图图像并在javascript中检测不同区域的方法
- 任何一个输入所需的文本区域或 HTML 表单中的复选框
- 是否有一种本机方法可以将字符串从任何区域设置转换为数字
- 任何输入或文本区域中数字字符串的事件侦听器
- 下面的函数没有向文本区域添加任何内容
- 使用 ajax 将文本区域信息存储到数据库中.除非我以任何方式编辑文本区域,否则工作正常.信息仍然被存储,但XMLHTT
- 文本区域属性 wrap=hard 不适用于粘贴的文本,任何解决方法
- 当单击该下拉菜单之外的任何区域时,如何使用javascript/jquery隐藏该下拉菜单
- 关闭导航单击屏幕的任何区域
- 用于计算Polygon的任何Javascript库或Jquery插件's区域
- 单击下拉按钮时使区域缩小的任何选项
- 如何检测SVG区域的任何位置的颜色
- 任何让文本区域跟随鼠标的方法
- Javascript从页面上的任何文本输入/文本区域获取选定的文本
- 如何检测对文本区域的任何更改