Simply looked from a jQuery point of view, you used to be able to attach to proprietary events (like "onpropertychanged") in IE using .bind() and now you won't in IE9. That fact alone justifies a fix in .bind() that will take IE9's behavior into consideration.
Well it seems that's because IE9 didn't want to carry over their non-standard onpropertychange event. That was probably the right move, although it sure would have been nice if they implemented DOMAttrModified on addEventListener at the same time.
To outline what I think it would take to completely support onpropertychange we'd need to:
- Figure out a feature detect for this problem, since it only affects IE9.
- Add code to detect "propertychange" as the event name and take a different path using attachEvent if the feature detect says we should.
- For propertychange events on IE9 ONLY, re-instate the IE workaround for the problem where attachEvent copies events when elements are cloned. When events of other types are attached to the same element, we would need to sort that out ... somehow.
- Special-case propertychange event removal as well.
Given how rarely this is used, I still think the plugins/code that need it should pay the tax rather than bake a huge bunch of special-case code into jQuery core.