2012-12-06 24 views
9

Các chuyển tiếp() lựa chọn mà tôi sử dụng để thay đổi vị trí các của svg yếu tố khi dữ liệu mới đến, hoạt động hoàn hảo khi cửa sổ trình duyệt đang mở nhưng khi tôi mở một tab khác hoặc thu nhỏ cửa sổ, hàm chuyển tiếp() đóng các phần tử svg lên trên nhau. khi tôi mở cửa sổ, tôi thấy các chi tiết xếp chồng lên nhau svg.d3.js chuyển tiếp() không hoạt động khi trình duyệt được giảm thiểu

Tuy nhiên, thoát() lựa chọn sẽ chuyển ra ngoài màn hình.

+0

Hey Tôi cũng phải đối mặt với cùng một vấn đề với Scatterplot của tôi có dữ liệu động. Miễn là trình duyệt đang mở các bản cập nhật lô nhưng giảm thiểu trình duyệt loại trang bị treo. Đó có phải là vấn đề rò rỉ bộ nhớ không ??? –

Trả lời

17

D3 uses requestAnimationFrame để cho phép vẽ trơn tru và hiệu quả. Đây là more info về chủ đề.

Vấn đề cơ bản mà nhiều người có, khi cửa sổ/tab ở chế độ nền, hiển thị trang "chuyển sang chế độ ngủ" và không có "khung hình động" được cung cấp, tức là trình duyệt sẽ dừng vẽ.

Bạn có thể giải quyết vấn đề này bằng cách sử dụng trình duyệt visibility API để kiểm soát bản vẽ của mình (ví dụ: làm cập nhật đầy đủ trong số các biểu đồ của bạn khi trang hiển thị lại). Xem các ví dụ related MDN page.

+2

Rất tuyệt! Tôi đã gặp vấn đề này trong quá khứ và cách giải quyết này có vẻ đầy hứa hẹn. Tôi sẽ nghĩ rằng đó là một thay thế để thực hiện cập nhật hoàn chỉnh * khi trang hiển thị *, thay vào đó, người dùng có thể quyết định có sử dụng 'transition()' tùy thuộc vào trạng thái hiển thị hay không. Ví dụ, nói rằng bạn có một số lựa chọn d3, 'mySelection', mà bạn muốn sửa đổi thuộc tính' "x" 'của nó; bạn có thể gọi '(document.hidden? mySelection: mySelection.transition()). attr (" x ", 12345)'. – meetamit

+1

btw. nếu bạn hài lòng với câu trả lời, hãy chấp nhận nó. – Juve

+0

Điều này có nên được báo cáo là yêu cầu tính năng không? Tôi nghĩ rằng phương thức transition() sẽ tự chăm sóc khả năng hiển thị của trình duyệt bằng cách sử dụng API hiển thị trang và tạo hiệu ứng tương ứng. Tôi không muốn cập nhật toàn bộ biểu đồ của mình. Thay vào đó, tôi sẽ tìm cách không hoạt ảnh khi không hiển thị như được đề xuất bởi @meetamit – arunkjn

Các vấn đề liên quan