Tôi đang làm việc trên một trang web được viết bằng Prototype nhưng chúng tôi đang chuyển sang jQuery. Rất nhiều cập nhật trang được thực hiện thông qua Ajax.Updater của Prototype. Tuy nhiên, đôi khi các yếu tố mà Prototype loại bỏ và thay thế đã có một tiện ích jQuery chạy trên chúng, vì vậy $ .cache có tham chiếu đến các yếu tố bổ sung được tạo ra bởi các widget. Vì jQuery không thực hiện việc loại bỏ DOM, nó không có cơ hội để xóa dữ liệu từ $ .cache cho các phần tử đó khi chúng bị loại bỏ, và tôi kết thúc với một rò rỉ bộ nhớ. Có cách nào để nói với jQuery để kiểm tra nó $ .cache và loại bỏ bất kỳ dữ liệu cho các yếu tố không còn trong DOM?Không sử dụng jQuery .data() trên một phần tử và sau đó xóa phần tử thông qua bộ nhớ rò rỉ thao tác DOM trực tiếp
5
A
Trả lời
3
Nghe có vẻ hơi phức tạp - đặc biệt kể từ Ajax.Updater là một chuyên môn của Ajax.Request, không không có một cuộc gọi lại không đầy đủ, có nghĩa là bạn có thể phải kiểm tra bộ nhớ cache định kỳ nhiều thứ. Điều đó nghe giống như nhiều công việc hơn là tạo ra một 'updater' của jQuery.
Nếu bạn sẵn sàng thay thế trình cập nhật bằng ghi đè jQuery, vấn đề này hoàn toàn biến mất và chắc chắn đơn giản hơn là làm việc xung quanh nó. Đơn giản 'updater' trong jQuery sau.
function update() {
$.ajax({
type: 'get',
url: 'theContent.html',
success: function(text) {
// .html calls '.cleanData()' internally. No need to do anything else.
$('#updateMe').html(text);
}
});
}
var i = setInterval(update, 5000);
Các vấn đề liên quan
- 1. Cách xử lý các phần tử DOM trong JavaScript để tránh rò rỉ bộ nhớ
- 2. JQuery xóa phần tử DOM sau khi mờ dần
- 3. Đối tượng jQuery và phần tử DOM
- 4. Rò rỉ bộ nhớ sau khi sử dụng typeinfo :: name()
- 5. jQuery.remove(), tách các phần tử DOM, nhưng tôi vẫn có thể truy cập các phần tử từ mã. Làm thế nào để tránh rò rỉ?
- 6. Thao tác trên mỗi cặp phần tử trong danh sách
- 7. jquery loại bỏ phần tử con trực tiếp
- 8. rò rỉ bộ nhớ trên Firefox addons
- 9. Làm cách nào để chèn phần tử trực tiếp sau phần tử khác với XMLStarlet?
- 10. Cập nhật DOM qua Javascript gây rò rỉ bộ nhớ (chỉ trong Firefox?)
- 11. đếm số phần tử giữa phần tử "này" và "đó"
- 12. Cách xóa phần tử dom khỏi đối tượng jquery
- 13. jQuery - Tìm phần tử chọn tiếp theo
- 14. Trực tiếp tham khảo các phần tử HTML
- 15. jQuery: Thêm phần tử sau phần tử thứ n
- 16. jQuery: Thêm phần tử sau phần tử khác
- 17. Góc - Làm cách nào để xóa DOM khỏi phần tử tôi đã sử dụng biên dịch $?
- 18. Rò rỉ bộ nhớ CheckedListBox
- 19. Cách lấy Phần tử DOM từ Bộ chọn JQuery
- 20. Rò rỉ bộ nhớ Javascript: Cây DOM bị tách
- 21. Bộ chọn jQuery cho một phần tử có chứa văn bản trực tiếp?
- 22. Phần tử ở trước hoặc sau một phần tử khác trong DOM
- 23. Việc thêm/xóa vòng tuần hoàn của các nút DOM gây ra rò rỉ bộ nhớ trong JavaScript?
- 24. Xác định mức sử dụng bộ nhớ của các phần tử DOM được lưu trong bộ nhớ cache trong JavaScript?
- 25. Javascript có xóa trình xử lý sự kiện của các phần tử DOM đã xóa không?
- 26. Nếu bạn xóa phần tử DOM, mọi sự kiện bắt đầu với phần tử đó có tiếp tục bong bóng không?
- 27. Sử dụng: sau để xóa các phần tử nổi
- 28. Di chuột một phần tử và thay đổi một phần tử khác (không sử dụng Javascript)
- 29. Jquery chọn phần tử tiếp theo
- 30. Hoàn tác triển khai - Thao tác DOM
Vì chúng tôi đã chạy phiên bản Prototype tùy chỉnh để bắt đầu, tôi vừa cập nhật các đối tượng Prototype Object.remove và Object.update để sử dụng jQuery để xóa các phần tử nếu jQuery hiện diện, qua đó đảm bảo dọn sạch dữ liệu. Tôi không muốn viết một trình cập nhật jQuery vì Ajax.Updater của Prototype được sử dụng ở quá nhiều nơi trong toàn bộ mã của chúng tôi để thay thế và kiểm tra đầy đủ trong một khoảng thời gian hợp lý. –