gpt4 book ai didi

javascript - 检测 JS 中 CSSStyleDeclaration 对象的变化

转载 作者:太空狗 更新时间:2023-10-29 13:52:54 25 4
gpt4 key购买 nike

有什么方法可以在 CSSStyleDeclaration 时收到通知?对象像 DOM 更改一样被更改,可以使用 DomAttrModified 之类的事件进行跟踪?

例如,如果有一些 JS 代码,例如

document.styleSheets[0].rules[0].style.backgroundImage = "url(myimage.png)";

有没有什么方法可以在完全不更改上面的代码片段的情况下获得有关 JS 处理程序中的更改的通知?

提前致谢!

最佳答案

我认为没有任何本地可用的东西。

根据您的用例,您可以轻松构建一个包装器,以便您的代码使用该包装器并通知监听器发生了某些变化。

像这样很基本的东西:

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)
})
}
}
}

你可以这样使用:

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)")

关于javascript - 检测 JS 中 CSSStyleDeclaration 对象的变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16708811/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com