【发布时间】:2010-08-10 16:00:52
【问题描述】:
当从 FireFox 中查看 SVG 文件时,当滚动条出现时,我试图在用户坐标空间中计算正确的鼠标坐标。但这并不完全正确。即使水平或垂直滚动 SVG,也需要正确绘制基于 SVG 的工具提示。
我希望坐标转换在 IE 和 Firefox 浏览器中是正确的。此外,我想使用单源 Javascript+SVG 解决方案来做到这一点,该解决方案希望不需要特定于浏览器的条件代码。我目前使用的是 FireFox 3.5.10,但我会考虑升级到更新版本的 FireFox,而且我还没有测试过 IE。
我遇到的问题是滚动条的坐标偏移:当滚动条出现在 Firefox 中的 SVG 元素上时,鼠标坐标转换是不够的。作为调试坐标转换的辅助工具,我正在使用一个简单的 SVG 文件,该文件包含 Javascript 处理程序,所有这些都在一个文件中,它只是将鼠标光标处的十字准线绘制为 SVG 线对象。在svg_cross_hairs.svg 上找到它。如果将该文件加载到 FireFox 并缩短 FireFox 窗口直到出现滚动条,然后滚动垂直或水平滚动条,您会发现 Javascript 绘制的十字准线被水平或垂直滚动量偏移,为了在鼠标光标实际所在的位置或附近绘制工具提示对象,这是不正确的。
我确实看到了关于 scrollTop 属性的 Firefox: Get mouse coordinates of top-left corner of viewport 问题。
msg#00056 澄清element.{pageX,pageY,clientX,clientY} 属性和element.getscreenCTM 方法的含义存在混淆。
在用户坐标系中,有没有更简洁的方法来获得正确的鼠标坐标?
【问题讨论】:
标签: firefox scroll svg horizontal-scrolling vertical-scrolling