我正在尝试为属性创建一个监视方法,在更改属性时使用__define[GS]etter__
。当我设置值时它反应很好,但是如果属性监听的是innerHTML,它在某种程度上无法呈现给定的字符串。所以基本上,当我向innerHTML添加内容时,它不显示。
我使用上一个问题中描述的监视方法: Watch for object properties changes in JavaScript
我可能因为不听内部HTML变化,但我也想知道__defineSetter__
是否会以某种方式阻止设置值的原始处理。
谢谢!
答案 0 :(得分:0)
该填充码实际上并不是直写:当您设置属性时,该值仅在监视包装器上记住,而不会传递给底层对象。它专为纯JavaScript对象而设计,其属性没有副作用(比如在innerHTML
的情况下更改DOM)。
然而,追求IMO并不值得追求。 DOM节点被允许为“主机对象”,因此无法保证任何本机JavaScript对象属性函数都可以在它们上运行。
(无论如何,在Object
原型上添加新成员通常被认为是一个非常糟糕的主意。)
我可能因为不听内部HTML变化
我认为这是最好的,是的。
答案 1 :(得分:0)
好的更新。 我在MSDN上找到了这个页面,它正是我需要的: http://msdn.microsoft.com/en-us/library/dd229916(VS.85).aspx
但是Object.getOwnPropertyDescriptor
做事的方式显然只适用于IE。游民。任何想法都将不胜感激。
答案 2 :(得分:0)
我找到了另一个看起来很有趣的网页,但我无法完全按照自己的意愿去做: http://www.refactory.org/s/recent/tag/accessors
我现在决定找一个解决方法,一个带有计时器的东西,它会检查属性的变化,并为支持它的浏览器改变属性。
但如果有人找到问题plz post的解决方案:)