2012-12-06 32 views
9

不工作的過渡()選擇我使用當新數據涉及到位置移動SVG的元素,完美地工作時的瀏覽器窗口打開但當我打開另一個選項卡或使窗口最小化時,功能將堆疊在彼此之上。當我打開窗戶時,我看到堆放在彼此頂部的元素。d3.js過渡()當瀏覽器被最小化

exit()然而,選擇移出屏幕。

+0

嘿,我也面臨同樣的問題,我的Scatterplot需要動態數據。只要瀏覽器打開了圖表更新,但最小化了瀏覽器頁面類型的掛起。它是一個內存泄漏問題? –

回答

17

D3 uses requestAnimationFrame使平滑和高效的繪圖。關於這個話題,這裏是more info

許多人遇到的基本問題是,當窗口/標籤在後臺時,頁面呈現「進入睡眠模式」並且沒有提供「動畫幀」,即瀏覽器將停止繪製。

您可以解決該「問題」,通過使用瀏覽器visibility API控制你的圖紙(例如,做一個完整的更新您的圖表當頁面再次變得可見)。 查看related MDN page的例子。

+2

不錯!過去我也遇到過這個問題,這個解決方法聽起來很有希望。我認爲,當頁面變得可見時,作爲完成更新的替代方法*,可以根據可見性狀態決定是否使用'transition()'。也就是說,你有一些d3選擇,'mySelection',你想修改它的''x''屬性;你可以調用'(document.hidden?mySelection:mySelection.transition())。attr(「x」,12345)'。 – meetamit

+1

btw。如果您對答案感到滿意,請接受它。 – Juve

+0

這應該作爲功能請求報告嗎?我認爲transition()方法本身應該使用頁面可見性API來關注瀏覽器可見性,並相應地進行動畫處理。我不想完全更新我的圖表。相反,如果@meetamit暗示不可見,我會找到一種不動畫的方式 – arunkjn

相關問題