[whatwg/dom] MutationObserver attribute change record only gives us the `oldValue`, but not the `newValue`? (#521)

I only see an `oldValue` when trying to observe attribute changes. Are we expected to access the attribute values on the element, inside the observer's callback?

For example, here's mine:

```js
        const observer = new MutationObserver( records => {

            for (const record of records) {
                behavior.attributeChangedCallback(
                    this.ownerElement,
                    record.attributeName,
                    record.oldValue,
                    this.ownerElement.getAttribute( record.attributeName )
                )
            }

        } )
```

where in my case `behavior` is part of an implementation of [element behaviors (the `has=""` attribute)](https://github.com/w3c/webcomponents/issues/662), implemented on to of [custom-attributes](https://github.com/matthewp/custom-attributes), but I haven't published it yet.

The `behavior.attributeChangedCallback` signature is `(element, attributeName, oldValue, newValue)`, so as you see I'm getting the new value from the element directly.

But this seems dirty. I might be calling some Custom Element's overriden or extended `getAttribute` method.

How does the MutationObserver implementation get the element's `oldValue`? It seems that the new value should be gotten the same way as the engine gets the old value (if not already) in order to be consistent.

I don't know exactly what "the same way" means though. Does the engine get the original value passed into `HTMLElement.prototype.setAttribute` (the native one, even is monkey patched)? Or what does it do?

Should I be looping on `element.attributes` instead, and using that as the source of truth, rather than `getAttribute`?

I'm wondering about what MutationObserver does for `oldValue`, but in general, considering that nothing will change for a while, I'm looking for advice on what's best to do. Thanks!

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/whatwg/dom/issues/521

Received on Sunday, 15 October 2017 23:15:09 UTC