JavaScript - 如何为选定的文本设置标记?

2023-12-02

我需要highlight选定的文本JavaScript(没有 jQuery)并且有control points or markers(左和右),我真的不知道如何称呼它们,就像在手机上一样,所以我可以随时通过拖动任何控制点来扩展选择。

例子:http://screencast.com/t/KJBdvreeVW

我已经抓住了选定的文本,演示:http://jsfiddle.net/henrichro/HJ482/

function getSelectionText() {
    var text = "";
    if (window.getSelection) {
        text = window.getSelection().toString();
    } else if (document.selection && document.selection.type != "Control") {
        text = document.selection.createRange().text;
    }
    alert(text);
}

if (window.Event) document.captureEvents(Event.MOUSEUP);
document.onmouseup = getSelectionText;

现在我有这个工作代码来获取文本,但我想在它周围有标记,如上面所写:)

2013 年 10 月 28 日更新:

在 Dementic 的指导(他的回答如下)之后,我想出了下一个工作代码:http://jsfiddle.net/henrichro/WFLU9/

当我选择时唯一的问题仍然存在多于一行。在这种情况下,标记显示错误。


在这里找到了解决方案:如何使用 html 标签包装 window.getSelection().getRangeAt(0) 中的文本选择?

它只使用了一点Jquery,将其修改为纯js(只是删除了选择器和onclick),您可以在这里找到一个工作示例:http://jsfiddle.net/3tvSL/83/

这会将选定的文本标记为黄色背景,并且需要更多的工作才能在两侧添加“标记”。

至于想法,你可以使用绝对定位的div作为标记, 当它被拖动时,你可以使用类似的东西:

function expand(range) {
    if (range.collapsed) {
        return;
    }

    while (range.toString()[0].match(/\w/)) {
        range.setStart(range.startContainer, range.startOffset - 1);   
    }

    while (range.toString()[range.toString().length - 1].match(/\w/)) {
        range.setEnd(range.endContainer, range.endOffset + 1);
    }
}

取自:使用 getSelection 选择整个单词

还有一件事, 我找到了一个有效的 js 库来完成你想要的事情......http://www.mediawiki.org/wiki/Extension:MashaJS看一看 :)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaScript - 如何为选定的文本设置标记? 的相关文章

随机推荐

  • 如何测量 Stackdriver 上的 Firestore 读写计数

    我需要监控 Firestore 数据库的实时读 写计数 我已经使用指标创建了仪表板 所附图像显示了当前配置 但是 这会显示速率 每秒 如何计算实际计数 或者是否有不同的聚合对齐器 如果您想将 计数 添加到现有图表中 请按照以下步骤操作 在仪
  • 如何使移动键盘外观与 div 发生碰撞而不是绝对将其自身定位在其上方?

    我正在开发一个简单的聊天组件 但遇到一个问题 在移动设备上 如果我单击文本框发送消息 而不是弹出其上方的消息列表 虚拟键盘会将自己绝对定位在它 这是不可取的 因为我希望用户在键入消息时能够看到最新消息 但是 我不知道如何纠正这种行为 而且我
  • 打算播放 YouTube 播放列表 [重复]

    这个问题在这里已经有答案了 我想从我的应用程序启动 YouTube 播放列表 对于单个视频来说这是显而易见的 startActivity new Intent Intent ACTION VIEW Uri parse http www yo
  • 从 SQL 到 MS Access 查询数据:本地表与传递表

    我创建了一个应用程序 它使用以下逻辑将数据从 SQL 查询到我的 MS Access 应用程序 我使用 ODBC 连接执行存储过程 使用此指定为传递查询以在本地提取数据 它看起来像这样 strSQL EXEC StoredProcedure
  • ImageIcon 不会更新具有相同 URL 的新图像

    我想使用 JLabel Icon 来显示来自我网站的图像 http xxx xxx xxx xxx java pic test jpg 我有一个刷新按钮来新建一个新的 JLabel 和 ImageIcon 为了获取最新的图像 程序运行成功
  • matplotlib 中的 Pandas 自动日期时间格式

    我经常在一个图中绘制来自不同来源的多个时间序列数据 其中一些需要使用 matplotlib 格式化 x 轴时 我使用 matplotlibautofmt xdate 但我更喜欢 pandas 的自动格式化 我知道我可以使用手动设置格式set
  • BeautifulSoup 不同的解析器

    任何人都可以详细说明 html parser 和 html5lib 等解析器之间的区别吗 我偶然发现了一个奇怪的行为 当使用 html parser 时 它会忽略特定位置的所有标签 看看这段代码 from bs4 import Beauti
  • 在 jquery DataTables 中跳过一行的渲染

    如果在初始化期间满足条件 我想跳过行渲染 但我不知道到底将其放置在哪里 我应该把它放进去吗fnCreatedRow or fnPreDrawCallback 我怎样才能做到这一点 这是我的代码 var users tbl users tbl
  • Cygnus 启动错误:ClassNotFoundException

    我的环境是CentOS 6 6的VM 我按照中的说明进行操作https github com telefonicaid fiware cygnus blob master doc quick start guide md安装天鹅座 还安装了
  • 如何使用 Yocto 生成适用于 Windows 的工具链?

    关于我的最后一个问题我问如何获得 Qt 工具链 我在 Linux 主机上尝试过 它可以工作 现在我需要知道如何使该工具链在 Windows 平台上工作 或者我需要什么 Yocto 设置来生成 Qt Windows SDK 安装程序 Woul
  • 使用 numpy.vectorize() 旋转 NumPy 数组的所有元素

    我正处于学习 NumPy 的开始阶段 我有一个 3x3 矩阵的 Numpy 数组 我想创建一个新数组 其中每个矩阵都旋转 90 度 我研究过这个answer但我仍然不明白我做错了什么 import numpy as np 3x3 m np
  • virtualenv pip mysqldb mac os X python

    我试过这个http jazstudios blogspot com 2010 07 installing mysql python mysqldb in html提示在 virtualenv 名为dogme 这篇文章指出了两件重要的事情 e
  • 如何在按下后以编程方式关闭 SearchView?

    我有同样的问题 我发现here我将重申这一点 因为该解决方案并不是 100 完全符合我的需要 目前 我的应用程序的操作栏中有一个 SearchView 当我单击搜索图标时 SearchView 会展开 并且键盘会按预期弹出 单击 Searc
  • 使用未渲染的控件的视觉画笔?

    我现在正在考虑一个想法 但碰壁了 我正在使用控制台应用程序在内存中创建一个视觉控件 准确地说是 DevExpress 图表控件 然后我尝试使用 VisualBrush 将该控件保存到图像中 但它不起作用 因为 我假设 该控件没有被吸引到屏幕
  • Qt4:使全屏窗口无法绕过(锁定屏幕)?

    我的应用程序是一个操作系统锁定屏幕 如 GDM 的锁定屏幕或 KDE 的锁定屏幕 因此我试图使其具有类似的功能 我试图让我的应用程序的窗口悬停在上面all其他窗口并禁用 拦截所有键盘快捷键 ALT TAB CTRL ALT D等 这会导致它
  • 当包含长文本视图时,滚动视图在 ics(android 4.0)上非常慢

    这是我的问题 我正在开发一个新闻应用程序 我使用滚动视图包装文本视图来显示新闻内容 但我发现当textview很长时 在android 4 0 ics上滚动非常慢 并且文本越长 滚动越慢 在 Android 2 3 设备上 一切都如预期的那
  • asp.net web API HTTP PUT 方法

    我有一些资源 UserProfile public UserProfile public string Email get set public string Password get set 我想分别更改电子邮件和密码 同一时间只能为用户
  • Python,睡眠一些代码而不是全部

    我遇到一种情况 在代码中的某个时刻我想触发多个计时器 代码将继续运行 但在某个时刻这些函数将触发并从 给定列表中删除一个项目 类似 但不完全像下面的代码 问题是 我希望这些函数等待一定的时间 我知道如何使用睡眠的唯一方法是使用睡眠 但是当我
  • 如何在 Node (\u00f6) 中转义 UTF-8 字符?

    我有一个使用 ISO Latin 编码的属性文件 但使用特殊字符作为 UTF 8 转义序列 例如以下字符串 Einstellungen l u00f6schen 我尝试了很多不同的组合iconv punycode and JSON pars
  • JavaScript - 如何为选定的文本设置标记?

    我需要highlight选定的文本JavaScript 没有 jQuery 并且有control points or markers 左和右 我真的不知道如何称呼它们 就像在手机上一样 所以我可以随时通过拖动任何控制点来扩展选择 例子 ht