Estoy usando un MutationObserver y me gustaría acceder al nuevo valor del atributo. Intento esto:
newValue = mutation.target[mutation.attributeName] Sin embargo, si, por ejemplo, la mutation.attributeName == 'style' , entonces la mutation.oldValue y mi newValue tienen un formato diferente: mutation.oldValue es una cadena formateada como newValue.cssText , mientras que newValue en sí mismo es un objeto CSSStyleDeclaration .
Me gustaría evitar programar para cada posible mutation.attributeName . nombre del atributo cosas como "si 'style' , use .cssText , si ..., use ...". Hay demasiados atributos posibles.
¿Cómo obtengo el nuevo valor en el formato de oldValue ?
Las preguntas relacionadas no responden a mi pregunta:
mutation["addedNodes"][0] de aquí no está definida en mi caso.Editar:
newValue = mutation.target.attributes.getNamedItem(mutation.attributeName) , pero también tiene un formato diferente al de mutation.oldValue . Para más detalles, consulte aquí .Los atributos y las propiedades son cosas diferentes. Para obtener la cadena de atributos, usaría getAttribute :
newValue = mutation.target.getAttribute(mutation.attributeName); Estaba accediendo a la propiedad desde la instancia del elemento, que en el caso del style es un objeto CSSStyleDeclaration que refleja las propiedades de style analizadas del atributo de estilo. Si bien muchos atributos se reflejan directamente como propiedades ( id , name ), otros tienen una forma diferente (como style ) o no están disponibles como propiedades en el elemento.