下面给出了一个示例 HTML 页面片段---
<div id="maindiv">
<div id="div1">
Text 1
<div id="div1_1"> Text 1_1 </div>
<div id="div1_1"> <a href="http://google.com/">Text 1_2</a> </div>
</div>
<div id="div2"> Text 2 </div>
</div>
现在这里有几个场景,包含上面文本的网页显示在浏览器中,用户选择浏览器中显示的一些文本--
情景一——
用户选择文本
Text 1_1
在网页中
情景2——
用户选择文本
Text 1 Text 1_1 Text 1_2
在网页中。
场景 3-- 用户选择以下文本 Text 1 Text 1_1 Text 1_2 Text 2
场景 4——用户选择以下文本
Text 1_2 Text 2
现在我想使用 Javascript 获取最顶层的节点,其全部内容已被用户选择。这是场景 1 中的单个 div,即。“div1_1”,场景 2 即。“div1”和场景 3 即。“maindiv”,但在场景 4 中,选择了 div1_2 的全部内容以及 div2 的全部内容——即内容已被选择的这 2 个 div 不是兄弟姐妹。所以我想为场景 4 提取的结果是“div1_2”和“div2”。
如上所述,如何提取 div?我在这里提到了 rangy 的使用,因为它非常有用,并且具有超出标准 JS DOM 的一些功能,但我愿意使用任何其他 JS 库,如 JQuery,甚至纯 Javascript。
我想在这里添加/询问的另一件事......即使有更多图像,任何 div 中有更多链接,并且用户的选择包括这些图像/链接,那么我将如何提取最上面的 div,这样这个 div 的文本内容等于用户选择的文本(图像可以被忽略,链接的文本只有用户选择了常规文本)?