Tôi không nghĩ có bất kỳ điều gì khả dụng cho điều này.
Tùy thuộc vào trường hợp sử dụng của bạn, bạn có thể dễ dàng xây dựng trình bao bọc, để mã của bạn sử dụng trình bao bọc và thông báo cho người nghe biết có gì đó đã thay đổi.
Something khá cơ bản như thế này:
function Wrapper() {
var listeners = []
return {
addListener: function(fn) {
listeners.push(fn)
},
removeListener: function(fn) {
listeners.splice(listeners.indexOf(fn), 1) // indexOf needs shim in IE<9
},
set: function(prop, val) {
prop = val
// forEach needs shim in IE<9, or you could use a plain "for" loop
listeners.forEach(call)
function call(fn) {
fn(prop, val)
})
}
}
}
Mà bạn có thể sử dụng như thế này:
var wrapper = Wrapper()
wrapper.addListener(function(prop, val) {
// When you'll change a prop, it'll get there and you'll see
// which property is changed to which value
})
// This sets the property and notifies all the listeners
wrapper.set(document.styleSheets[0].rules[0].style.backgroundImage, "url(myimage.png)")
Nguồn
2013-05-23 08:43:45
Tôi nghĩ rằng, bạn có thể giữ cssText trong một biến và so sánh nó sau này. –
@Mr_Green không giải quyết được sự cố, OP đang hỏi liệu có sự kiện nào mà anh ấy có thể móc trên đó sẽ kích hoạt khi CSS thay đổi không. Giống như sự kiện Đột biến DOM. Câu hỏi thú vị OP. –
@Mr_Green bỏ phiếu chuỗi lớn không chính xác hiệu quả –