当前位置: 首页 > 面试题库 >

如何用元素包装/环绕突出显示的文本

司马自明
2023-03-14
问题内容

我想将选定的文本包装在具有span的div容器中,可以吗?

用户将选择一个文本并单击一个按钮,单击按钮时,我想用span元素包装该选定的文本。我可以使用来获取所选文本,window.getSelection()但如何知道其在DOM结构中的确切位置?


问题答案:

如果所选内容完全包含在单个文本节点中,则可以使用surroundContents()从所选内容中获得的范围的方法来执行此操作。但是,这非常脆弱:如果选择不能在逻辑上包围在单个元素中(通常,如果范围跨越节点边界,尽管这不是精确的定义,则它不起作用。在一般情况下,要执行此操作,您需要一种更复杂的方法。

此外,IE <9中不支持DOMRangewindow.getSelection()。对于这些浏览器,您将再次需要另一种方法。您可以使用我自己的Rangy之类的库来规范浏览器行为,并且您可能会发现该类应用程序模块对该问题很有用。

码:

function surroundSelection(element) {
    if (window.getSelection) {
        var sel = window.getSelection();
        if (sel.rangeCount) {
            var range = sel.getRangeAt(0).cloneRange();
            range.surroundContents(element);
            sel.removeAllRanges();
            sel.addRange(range);
        }
    }
}


 类似资料:
  • 问题内容: 当一个HTML元素被“聚焦”(当前被选中/标签入)时,许多浏览器(至少是Safari和Chrome)会在其周围放置一个蓝色边框。 对于我正在处理的布局,这会分散注意力,看起来不正确。 Firefox似乎没有这样做,或者至少可以让我通过以下方式控制它: 如果有人可以告诉我IE的性能,我会很好奇。 让Safari消除这点闪光会很好。 问题答案: 对于您的情况,请尝试: 或一般而言,影响所有

  • 问题内容: 有人可以通过可以在网页上突出显示文本的JavaScript函数来帮助我。要求是-仅突出显示一次,而不是像我们在搜索情况下那样突出显示所有出现的文本。 问题答案: 您可以使用jquery 突出显示效果。 但是,如果您对原始javascript代码感兴趣,请看一下我得到的内容。将复制粘贴到HTML中,打开文件,然后单击“突出显示”-这应该突出显示“ fox”一词。在性能方面,我认为这适用于

  • 问题内容: 我的这个div元素带有背景图像,并且双击它时我想停止在div元素上突出显示。是否有CSS属性? 问题答案: 下面的CSS阻止用户选择文本。 要向下定位IE9和Opera,必须改用html属性:

  • 问题内容: 对于充当按钮的anchors (例如,“堆栈溢出”页面顶部的“ 问题”,“ 标签”,“ 用户 ”等)或选项卡,是否存在CSS标准方法来禁用突出显示效果(如果用户不小心选择了文本)? 我意识到可以使用JavaScript来完成此操作,并且经过一番搜寻后得出了仅Mozilla -moz-user-select选项。 是否有使用CSS来实现此目标的符合标准的方法,如果没有,“最佳实践”方法是

  • 问题内容: 我想让用户单击一个链接,然后它在另一个元素( 而不是 输入)中选择HTML文本。 “选择”是指您将鼠标拖到文本上方来选择文本的方式。这一直是研究的负担,因为每个人都用其他术语谈论“选择”或“突出显示”。 这可能吗?到目前为止,我的代码: HTML: JS: 我是否明显遗漏了一些东西? 问题答案: Javascript jQuery(原始答案) 我已经在此线程中找到了解决方案。我能够修改

  • 问题内容: 任何人都知道为什么overflow:hidden强制具有浮动元素的元素包装元素吗? 我真的很想了解内部工作原理,而不是仅仅使用它并相信“它确实有效”。 当包含元素的方向与浮动的子元素相同的方向时,我可以理解它的工作原理,但是overflow:hidden意味着裁剪溢出的内容(与position:absolute / relative一起使用时)。 任何信息表示赞赏。 问题答案: 浮点数