对可拖动的PowerCharts图中的更改做出反应

时间:2012-04-17 10:59:41

标签: javascript javascript-events fusioncharts

我正在使用drag-able line chart from the FusionCharts PowerCharts package

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:1)

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

  1. 轮询总是一个坏主意。短时间的轮询更糟糕。但是,如果您不需要在数据点拖动时自发地做出反应,则可以进行高间隔轮询。有关您的信息,可以使用setInterval函数或使用递归setTimeout对JavaScript进行轮询。
  2. 如果您想要跟踪鼠标事件,请记下如果您要呈现Flash图表,则需要确保图表的wMode(窗口模式)参数未设置为“窗口” 。在“window”wMode中,浏览器在图表上悬停时不会跟踪鼠标事件。要更改图表的wMode,请确保在呈现图表之前执行chartInstance.setTransparent(false)chartInstance.setTransparent(true)
  3. 您计划的鼠标事件方法对您没有帮助,因为您不知道用户是否点击了数据点。因此排除了这种方法。

    因此,您将继续进行投票。 :(

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