我正在工作的网站是使用一个脆弱的广告提供商,有时他们返回的JS代码是有bug的,例如最终改变整个body
元素的背景颜色,而不是自己的div
元素。不幸的是,我们不得不使用他们的服务,他们需要很长时间才能纠正这些错误。
所以,我正在考虑创建一个解决方案,例如,当body
元素的background-color
样式被改变时,我的回调函数将被调用以将其更改回正确的值。是否有一个干净的方法来做它与YUI3(或jQuery,或纯JS,如果YUI3没有它)?
我知道我可以定期设置背景,用setInterval()
来纠正颜色,但这对我来说似乎很浪费和混乱。有人知道更好的方法吗?
如果你是通过javascript改变CSS,你可以使用突变事件(二级事件)。
你可以监听这些事件:
- DOMAttrModified
- DOMAttributeNameChanged
- DOMCharacterDataModified
- DOMElementNameChanged
- DOMNodeInserted
- DOMNodeInsertedIntoDocument
- DOMNodeRemoved
- DOMNodeRemovedFromDocument
- DOMSubtreeModified
所以要么监听DOMAttrModified,带有Style属性,要么监听Class属性。