Tôi cần phải theo dõi sự thay đổi thuộc tính trên bất kỳ phần tử con nào của một phần tử DOM cụ thể. Cho đến nay, tôi đã sử dụng mutation events.Xem các thay đổi DOM, cách thanh lịch
Vấn đề là - chúng là lỗi: ví dụ: dưới Chromium, DOMAttrModified
không được kích hoạt nhưng DOMSubtreeModified
là. Vấn đề rất dễ giải quyết: bởi vì theo đặc điểm kỹ thuật, DOMSubtreeModified
bị sa thải nếu bất kỳ sự kiện nào khác bị sa thải, vì vậy tôi chỉ nghe DOMSubtreeModified
.
Dù sao, Chromium, trong các phiên bản gần đây, đã ngừng kích hoạt bất kỳ điều gì nếu thuộc tính đã được sửa đổi.
Tuy nhiên, Mutation Observer API mới hoạt động hoàn hảo. Cho đến bây giờ, tôi chỉ cần gọi lại khi bất kỳ thay đổi nào của thành phần cụ thể - đơn giản vì không có gì khác thay đổi - vì vậy tôi đã giải quyết được vấn đề của mình bằng cách sử dụng sự kiện đột biến & trình theo dõi đột biến (nếu có)) trong cùng một đoạn mã. Tuy nhiên, bây giờ tôi cần phải lọc mạnh hơn các sự kiện (ví dụ trên nút mới, trên nút đã loại bỏ) - như vậy có một thư viện, có thể là một plugin jQuery, điều đó sẽ cho phép tôi sử dụng một cách thanh lịch cả hai trong số các API này - MutationObserver
nếu các sự kiện có sẵn và đột biến là dự phòng, với khả năng lọc cho các loại sự kiện cụ thể (ví dụ: phần tử được thêm, thuộc tính đã thay đổi).
Ví dụ:
$("#test").watch({onNewElement: 1}, function(newElement){})
$("#test").watch({onNewAttribute: 1}, function(modifiedElement) {})
Hoặc không jQuery
watchChanges("#test", {onNewElement: 1}, function(newElement){})
watchChanges("#test", {onNewAttribute: 1}, function(modifiedElement){})
một số tìm kiếm tìm thấy này, nhưng nó chỉ hỗ trợ các API mới: http://code.google.com/p/mutation-summary/ . Tôi cũng tìm thấy điều này, dường như là một phiên bản đơn giản của những gì bạn đang yêu cầu: http://stackoverflow.com/questions/10868104/can-you-have-a-javascript-hook-trigger-after-a- dom-elements-style-object-change – thirtydot
Tôi cũng tìm thấy tóm tắt đột biến, nhưng nó không hỗ trợ các sự kiện đột biến làm dự phòng. Câu trả lời đầu tiên của chuỗi bạn đã đăng về cơ bản là những gì tôi làm trong mã của mình để quan sát các thay đổi thuộc tính. Trong cùng một nguyên tắc, một thư viện có thể được xây dựng cho phép xem các sự kiện DOM cụ thể bằng cách sử dụng cả các quan sát đột biến và (dưới dạng dự phòng). Đó là những gì tôi cần. – Ivo
+1: Tôi thực sự đào các câu hỏi 'thực hành tốt nhất'. –