Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用YUI3检测HTML元素的样式更改?_Javascript_Jquery_Css_Styles_Yui3 - Fatal编程技术网

Javascript 如何使用YUI3检测HTML元素的样式更改?

Javascript 如何使用YUI3检测HTML元素的样式更改?,javascript,jquery,css,styles,yui3,Javascript,Jquery,Css,Styles,Yui3,我正在工作的网站使用的是一个古怪的广告提供商,有时他们返回的JS代码有问题,例如,最终改变了整个主体元素的背景颜色,而不是它自己的div元素。不幸的是,我们不得不使用他们的服务,他们需要很长时间才能纠正这些错误 因此,我正在考虑创建一个变通方法,例如,当主体元素的背景色样式更改时,将调用回调函数将其更改回正确的值。有没有一种干净的方法可以使用YUI3(或者jQuery,或者如果YUI3没有的话,可以使用纯JS) 我知道我可以使用setInterval()定期将背景设置为正确的颜色,但这对我来说既

我正在工作的网站使用的是一个古怪的广告提供商,有时他们返回的JS代码有问题,例如,最终改变了整个
主体
元素的背景颜色,而不是它自己的
div
元素。不幸的是,我们不得不使用他们的服务,他们需要很长时间才能纠正这些错误

因此,我正在考虑创建一个变通方法,例如,当
主体
元素的
背景色
样式更改时,将调用回调函数将其更改回正确的值。有没有一种干净的方法可以使用YUI3(或者jQuery,或者如果YUI3没有的话,可以使用纯JS)


我知道我可以使用
setInterval()
定期将背景设置为正确的颜色,但这对我来说既浪费又混乱。有人知道更好的方法吗?

如果您通过javascript更改CSS,您可以使用(二级事件)

您可以收听这些活动:

  • 多姆塔特修改
  • 域属性更改
  • DOMCharacterDataModified
  • 家庭成员名称已更改
  • 域名插入
  • DOMNodeInsertedIntoDocument
  • 域名删除
  • DOMNodeRemovedFromDocument
  • 多姆萨特雷修改

因此,可以使用Style属性或Class属性收听DOMAttrModified。

在重复时使用背景图像怎么样?这样,如果它们更改颜色,就不重要了,因为您仍然有平铺背景。或者您可以将背景属性声明移动到另一个标记中?与其使用
body
不如使用
hmtl
或嵌套在body中的第一个div?只是一些想法。@ProfileTwist我已经在repeat上有一个背景图像,但它在顶部定义了一个渐变,因此它有
repeat-x
,但没有
repeat-y
。我不知道如何让它在二维中重复。我无法在
html
上设置背景色,因为它被
body
的样式覆盖。我没有一个包含所有内容的
div
元素,但我会检查是否可以添加它。无论如何,感谢你的想法,我喜欢它们:)广告服务器在我的代码中插入
html,body,#someid{背景色:随便什么}
,我想他们的意思是
html body#someid
…你为什么不使用一个脚本来检测“更改”呢?如果您知道html、body和someid可能会受到影响,为什么不通过研磨机运行它们并更改它们的设置?如果我是你的话,我宁愿花时间对广告开发者大喊大叫,告诉他们现在就把它修好。改变这样一个小错误应该只需要30分钟。这是一个非常严重的错误,叫喊部分已经完成,他们最终会修复它,但与此同时,我们的用户得到了一个坏页,我不得不尽快修复它。。。它现在已经修复,但我正在寻找一个更干净的解决方案。这看起来是解决这个问题的一个很好的干净的解决方案,但不幸的是浏览器支持真的很弱:(无论如何,谢谢)。@szery如果欢迎,试着用谷歌搜索一些多边形填充,也许你会很幸运。