I'm trying to override the setters of some style properties in javascript.
Here's an example of what I'm doing.
const setDescriptor = Object.getOwnPropertyDescriptor(CSSStyleDeclaration.prototype, 'backgroundImage').set;
Object.defineProperty(CSSStyleDeclaration.prototype, 'backgroundImage', {
set: function (value) {
const newValue = // Some sort of mutation to value
setDescriptor.call(this, newValue);
},
});
When trying to run this inside my browser I'm getting the following error:
Uncaught TypeError: Cannot read properties of undefined (reading 'set')
I know that the interface does not have any reference to styling properties.
However, when accessing an instance of CSSStyleDeclaration from CSSStyleRule.style the properties do exist.
When is that instance populated? How can I override the setters of the properties for all new and old instances?