2013-01-12 46 views
8

Tôi nhận được RangeError trong khi tuần tự hóa đối tượng Navigator.Kích thước ngăn xếp cuộc gọi tối đa vượt quá trong JSON.stringify (navigator)

Lý do có thể là gì?

JSON.stringify(navigator); 
RangeError: Maximum call stack size exceeded 

Trình duyệt: Chrome enter image description here

+0

Thêm một chút thông tin? – Raekye

+0

Bạn cần hiển thị nội dung bên trong đối tượng điều hướng. – StilesCrisis

+1

Về cơ bản, đối tượng điều hướng của bạn quá lớn. –

Trả lời

2

Đó là bởi vì, như các thông báo lỗi cho biết, đối tượng navigator là quá lớn.

Bạn có thể sử dụng dystroy's modified JSON function như thế này:

var navJSON = JSON.pruned(navigator); 

Đối tượng quay trở lại là khá lớn, nhưng nó gần như chắc chắn rằng nó không phải là hoàn toàn chính xác. Nếu bạn muốn chuyển dữ liệu về đối tượng navigator bằng JSON, bạn chỉ nên gửi các thuộc tính đó, chứ không phải toàn bộ đối tượng.

1

Tại sao bạn không sao chép các giá trị cụ thể mà bạn quan tâm đến đối tượng mới và sau đó tuần tự hóa thay thế?

Có thể tìm thấy thuộc tính của nó dẫn đến vòng lặp vô tận.

+0

Tôi hy vọng đó là vì đối tượng 'navigator' không phải là tiêu chuẩn trên các trình duyệt và anh ta muốn tất cả thông tin có sẵn. –

1

Có thể đối tượng điều hướng chứa liên kết tự. Bạn nên sao chép navigator trong đối tượng khác và xóa các liên kết lớn trên chúng.

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