shadow dom - know when dom is rendered/changed
我正在编写一个Chrome扩展程序,该扩展程序会在页面加载或更改时修改元素的属性。
我使用Mutation Observer进行此操作。但是,在加载/更改shadow-dom(即嵌入式Twitter帖子)时,不会调用观察者的处理程序。
有没有一种方法可以在影子dom加载/更改时获取事件,或者将突变观察者挂钩到该事件?
谢谢!
您可以简单地使用Shadow DOM
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | customElements.define('image-list', class extends HTMLElement { connectedCallback() { var observer = new MutationObserver(function(mutations) { mutations.forEach(function(mutation) { //Detect <img> insertion if (mutation.addedNodes.length) console.info('Node added: ', mutation.addedNodes[0]) }) }) this.attachShadow({mode: 'open'}).innerHTML = '<img alt="image 1">' observer.observe(this.shadowRoot, {childList: true}) } addImage() { var img = document.createElement('img') img.alt=' new image ' this.shadowRoot.appendChild(img) } }) |
1 2 3 | <image-list id=LI> </image-list> <button onclick="LI.addImage()">Add image</button> |