我正在编写一个 Web 组件增强器函数,当元素从 DOM 中删除时我需要运行一些东西——但我事后知道这一点。我使用了 MutationObserver - 但我的组件在页面周围使用了很多,并且多个突变观察器导致了性能问题。
这是在没有 MutationObserver 的情况下执行此操作的尝试:
class TestComponent extends HTMLElement {
disconnectedCallback() {
console.log('CB');
}
}
window.customElements.define('test-component', TestComponent);
function enrichComponent(component) {
const originalDisconnectedCallback = component.disconnectedCallback;
component.disconnectedCallback = function() {
originalDisconnectedCallback();
console.log('CB1');
}
}
const component = document.createElement('test-component');
enhancer(component);
document.body.appendChild(component);
component.remove(); // logs 'CB' but no 'CB1'
这是行不通的。
有没有办法“monkeypatch” disconnectedCallback?
临摹微笑
拉莫斯之舞
相关分类