在这里发现了一个几乎相同的问题:Should an IntersectionObserver is disconnected when element is removed
我还没有找到说明MutationObserver从 DOM 中删除带有附加(MO)的元素时应该做什么的文档。API 不提供像 那样的 remove 方法removeEventListener,只是一个disconnect只涉及子节点的临时方法。垃圾收集最终会出现,但似乎在 SPA 网络应用程序中可能会变得混乱/臃肿。我可以使用delete关键字来删除保存 MO 的变量,但我已经阅读了这样做的警告(不一定适用于 MO),而不是让垃圾收集处理它。
因此,我正在寻找官方信息,例如“删除关联的 DOM 元素时删除 MO”,或“不再使用分配的变量时,MO 会自动垃圾回收”,或“MO 应从其父对象中删除”如果它们不再被使用,“等等。
我有一个用例,其他人依赖我在他们从 master 下拉时没有启用标志,但我需要在本地处理 repo 时启用它。
我希望/希望?Git 有一种方法可以添加一个通知或警告,当请求推送到 master 时触发......作为各种“提醒”。
所以也许我的工作流程可能是这样的:
我可以获得单个元素或共同祖先元素,但我无法弄清楚如何获取所有突出显示的元素。
这是获取共同祖先的演示。
console.clear();
document.querySelector('div').addEventListener('mouseup', () => {
const selection = window.getSelection();
const elem = selection.getRangeAt(0).commonAncestorContainer.parentNode;
console.log(elem);
});Run Code Online (Sandbox Code Playgroud)
<div contenteditable="true">
<header>
<h1>Rich Text Editing Development</h1>
<p>I'm <strong><em>really</em> annoyed</strong> with trying to figure out this answer.</p>
</header>
</div>Run Code Online (Sandbox Code Playgroud)
由于rangeCount总是只有 1,并且我从选择和其他子项中看到的对象没有所选项目的数组或节点列表(我注意到),所以我不知道该怎么办。
那么我如何知道哪些元素被选择/突出显示?