获取整个html页面

时间:2017-11-22 16:57:56

标签: javascript jquery html

我希望能够获得用户高调的文本之前的字符,并且我需要在其中包含html。当呈现以下示例时,用户将只看到" word"。当用户突出显示这一点时,我希望能够找出有一个尖括号(或任何其他字符)

<span>word</span>

以下将给出选择,它给我一个开始和结束索引,但这些是相对于该文本所属的节点。它也是dom相关的,并不包含html。

selectedText= childwindow.getSelection();

为了解决这个问题,我试图在页面的html字符串上获取此文本的indexOf值,这是有效的。

childwindow.document.documentElement.innerHTML.indexOf(selectedText)

这个问题是,如果我突出显示&#34;&#34;这样一个单词出现在页面上几次,那么索引就不正确了。我能理解为什么,但我不知道还能做什么。我想我需要以某种方式从dom中得到这个,因为它知道我获得的确切文本。

即使这是不可能的,有什么我可以从dom中获取,这将帮助我使indexOf请求更可靠。我可以在引擎盖下添加额外的数据,以确保它符合我想要的值。

1 个答案:

答案 0 :(得分:0)

这应该是诀窍:

function textSelected() {
    if (window.getSelection) {
        t = window.getSelection().toString() || "";
    } else if (document.selection && document.selection.type != "Control") {
        t = document.selection.createRange().text || "";
    }
    return t;
}

主要是窗口的函数getSelection

  

返回一个Selection对象,表示所选文本的范围   用户或插入符号的当前位置。

一旦你拥有它,只需从Selection obj中获得你想要的东西。

其他部分是为了防止您选择跨元素。然后你需要使用选择范围。有关document.selection的更多信息: docs