【问题标题】:can't get text highlighted when multiple tags are present [closed]存在多个标签时无法突出显示文本[关闭]
【发布时间】:2013-09-14 06:52:13
【问题描述】:

所以我试图通过选择文本并单击按钮来突出显示文本(标记为获取突出显示的文本)。

这是它的实现:

http://jsbin.com/uzILUro/1

具有多个标签的html 的一部分未被选中。

即尝试选择以下段落并通过单击按钮将其突出显示。

"The remainder is r when p is divided by k" means p = kq + r; the integer q is called the quotient. For instance, “The remainder is 1 when 7 is divided by 3” means 7 = 3·2 + 1. Dividing both sides of p = kq + r by k gives the following alternative form p/k = q + r/k.

除以上段落外的所有其他作品。

【问题讨论】:

  • 您必须完善您的问题;没有足够的信息来了解您要达到的目标。您的示例没有提供信息。
  • @mortb 我基本上想突出显示用户选择的文本,但某些包含一些特殊标签的文本没有被选中,上面的文字就是一个例子。

标签: javascript html


【解决方案1】:

主要问题是您使用的是var searchText = document.getSelection().toString(),它没有考虑您选择中的打开和关闭标签。 相反,您应该尝试使用searchText = newNode.innerHTML

在您的 getSelectedText 函数中进行这些更改,您应该会很成功。 不过,IE 可能需要进行一些额外的更改。

【讨论】:

  • searchText=sel.innerHTML;GetSelectedText 函数中?
  • @prateek No. sel 是一个选择对象,而不是一个节点。在您自己的代码中,您正在创建一个变量newNode,您使用range.surroundContents(newNode); 填充所选内容。之后,您应该使用newNode.innerHTML 提取内容
【解决方案2】:

您可以在大多数浏览器中使用window.find(),尽管它可能最终会从浏览器中删除(MozillaWebKit)。这是一个答案:

https://stackoverflow.com/a/5887719/96100

【讨论】:

    猜你喜欢
    • 2023-03-14
    • 2013-11-08
    • 1970-01-01
    • 2011-02-05
    • 2012-03-02
    • 2014-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多