Gnuplot:嵌入在网站上的交互式SVG图表在缩放时显示错误的鼠标坐标

时间:2014-07-28 05:11:29

标签: javascript svg gnuplot

当您嵌入使用编译的Gnuplot svg图时 设置术语svg size 600,480 mouse jsdir http://your.server.com/gnuplot-js-directory/ 在您的网页大小上,您可以切换显示X和Y值的坐标框。

如果您的SVG文件在相对于大小(600px×480px)的<embed><object>标记中缩放,则坐标关闭并显示在光标旁边。

1 个答案:

答案 0 :(得分:2)

这是gnuplot-js目录中gnuplot_svg.js中的错误。

找到它所说的部分

p.x = evt.clientX; p.y = evt.clientY;
p = p.matrixTransform(m.inverse());

// Allow for scrollbar position (Firefox, others?)
if (typeof evt.pageX != 'undefined') {
    p.x = evt.pageX; p.y = evt.pageY;
}

并添加以下行:

if (document.documentElement.clientWidth) {
                p.x = p.x / document.documentElement.clientWidth * gnuplot_svg.plot_term_xmax;
                p.y = p.y / document.documentElement.clientHeight * gnuplot_svg.plot_term_ymax;
        } else if (window.innerWidth) {
                p.x = p.x / window.innerWidth * gnuplot_svg.plot_term_xmax;
                p.y = p.y / window.innerHeight * gnuplot_svg.plot_term_ymax;
        }

现在,坐标框位置应相对于您或标记内SVG的实际大小进行缩放,并将跟随光标。 (适用于Chrome和InternetExplorer,Firefox不报告document.documentElement.clientWidth但是window.innerWidth,结果应该相同。尚未测试Safari。)