2012-04-17 53 views
1

我正在使用drag-able line chart from the FusionCharts PowerCharts package對可拖動的PowerCharts圖中的更改作出反應

我需要獲取圖形的數據並將其發送到服務器端,以便在用戶移動可拖動點後進行進一步處理。這很容易處理圖形中的提交按鈕,但我希​​望在用戶不必點擊提交按鈕的情況下發生這種情況。

根據文檔(特別是在events上),似乎圖表不會在用戶移動圖表中的某個點時觸發任何事件。

所以,現在我試圖找出最好的方式來獲得圖形用戶改變的通知?

一個選擇是定期調用一個JS函數,該函數可以獲取圖形的數據,並檢查自上次檢查以來是否發生了變化。然而,這感覺非常醜陋和低效,我目前不知道如何在JS中實現連續輪詢。

我現在傾向於傾聽圖形元素上的鼠標移動事件,然後檢查圖形以前狀態的更改。這應該可以工作,儘管用戶可能經常點擊圖表而不實際拖動點。

我錯過了其他一些明顯的解決方案嗎?

回答

1

有一對夫婦的事情,我想我們達成解決方案之前提出:

  1. 輪詢始終是一個壞主意。並且在短時間內進行投票更差。但是,如果您不需要對數據點進行自動反應,則可以進行高間隔輪詢。對於您的信息,輪詢是通過使用setInterval函數或使用遞歸setTimeout在JavaScript上完成的。
  2. 如果您想跟蹤鼠標事件,請留意,如果您要渲染Flash圖表,則需要確保圖表的wMode(窗口模式)參數未設置爲「窗口」。在「窗口」wMode中,瀏覽器不會在鼠標懸停在圖表上時跟蹤鼠標事件。要更改圖表的wMode,請確保在渲染圖表之前執行chartInstance.setTransparent(false)chartInstance.setTransparent(true)

您計劃的鼠標事件方法不會幫助您,因爲您不知道用戶是否點擊了數據點。因此排除了這種方法。

因此,您只剩下輪詢。 :(

更新(由詹恩第一後評論): 使用兩者的結合,檢驗數據的變化時,拖動事件上發生的圖表是正確的解決方案

+0

感謝您的回答我可能。仍然使用鼠標跟蹤,並檢查自上次鼠標點擊以來圖表數據是否發生了變化,以確定用戶是否改變了任何東西。順便說一下,因爲您在FusionCharts工作,您是否知道是否有計劃使可拖動當用戶點擊數據點時圖表觸發事件? – Janne 2012-04-18 06:24:27

+0

有計劃,它不是很遠,但我不確定日期。 – 2012-04-18 17:07:49

相關問題