1

我正在使用FusionCharts PowerCharts 包中的可拖动折线图

在用户移动可拖动点后,我需要获取图形的数据并将其发送到服务器端进行进一步处理。使用图表中内置的提交按钮很容易做到这一点,但我希望在用户不必单击提交按钮的情况下实现这一点。

根据文档(尤其是events),当用户移动图表中的一个点时,图表似乎不会触发任何事件。

所以现在我正试图找出最好的方法来通知用户对图表所做的更改?

一种选择是定期调用一个 JS 函数,该函数将获取图形的数据并检查自上次检查以来它是否已更改。然而,这感觉非常丑陋和低效,我目前不知道如何在 JS 中实现连续轮询。

我现在倾向于只在图形所在的元素上侦听鼠标向上事件,然后检查对图形先前状态的更改。这应该可以工作,尽管用户可能会经常单击图形而不实际在其中拖动一个点。

我在这里错过了一些其他明显的解决方案吗?

4

1 回答 1

1

在我们找到解决方案之前,我想提出几件事:

  1. 轮询总是一个坏主意。并且短时间的轮询更糟糕。但是,如果您不需要对数据点的拖动做出自发反应,则可以进行高间隔轮询。供您参考,轮询是在 JavaScript 上通过使用setIntervalfunction 或使用 recursive完成的setTimeout
  2. 如果您想跟踪鼠标事件,请注意,如果您正在渲染 Flash 图表,您需要确保图表的wMode(窗口模式)参数未设置为“窗口”。在“窗口”wMode 中,浏览器在将鼠标悬停在图表上时不会跟踪鼠标事件。要更改wMode图表,请确保执行chartInstance.setTransparent(false)chartInstance.setTransparent(true)在呈现图表之前执行。

您计划的鼠标事件方法对您没有帮助,因为您不知道用户是否点击了数据点。因此排除了这种方法。

因此,剩下的就是轮询。:(

更新(在 Janne 的第一条评论之后): 当图表上发生拖动事件时,使用两者的组合来检查数据更改是正确的解决方案。

于 2012-04-17T16:33:17.530 回答