跨多个标签获取选择和环绕内容

2024-01-03

我有一个脚本可以更改所选文本的背景颜色。但是,当跨多个元素/标签选择文本时,我遇到了问题。

我得到的代码是:

var text = window.getSelection().getRangeAt(0);
var colour = document.createElement("hlight");
colour.style.backgroundColor = "Yellow";
text.surroundContents(colour);

输出的错误是:

Error: The boundary-points of a range does not meet specific requirements. =
NS_ERROR_DOM_RANGE_BAD_BOUNDARYPOINTS_ERR
Line: 7

我相信这与 getRange() 函数有关,尽管我不太确定如何继续,因为我是 javascript 的初学者。

还有其他方法可以复制我想要实现的目标吗?

非常感谢。


今天有人问这个问题:如何突出显示 DOM Range 对象的文本? https://stackoverflow.com/questions/2582831/highlight-the-text-of-the-dom-range-element

这是我的回答:

以下应该做你想做的事。在非 IE 浏览器中,它会打开设计模式,应用背景颜色,然后再次关闭设计模式。

UPDATE

已修复可在 IE 9 中工作。

function makeEditableAndHighlight(colour) {
    sel = window.getSelection();
    if (sel.rangeCount && sel.getRangeAt) {
        range = sel.getRangeAt(0);
    }
    document.designMode = "on";
    if (range) {
        sel.removeAllRanges();
        sel.addRange(range);
    }
    // Use HiliteColor since some browsers apply BackColor to the whole block
    if (!document.execCommand("HiliteColor", false, colour)) {
        document.execCommand("BackColor", false, colour);
    }
    document.designMode = "off";
}

function highlight(colour) {
    var range, sel;
    if (window.getSelection) {
        // IE9 and non-IE
        try {
            if (!document.execCommand("BackColor", false, colour)) {
                makeEditableAndHighlight(colour);
            }
        } catch (ex) {
            makeEditableAndHighlight(colour)
        }
    } else if (document.selection && document.selection.createRange) {
        // IE <= 8 case
        range = document.selection.createRange();
        range.execCommand("BackColor", false, colour);
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

跨多个标签获取选择和环绕内容 的相关文章

  • 防止用户在 javascript 中离开我的页面

    在我的表单中 我有一个不显眼的情态 如果用户单击我的 离开图像 我会打开模式并询问他是否想离开 如果用户同意 JavaScript Jquery 是否可以 停止 重新加载或页面更改以显示我的模式并继续操作 重新加载 下一页 上一页等 I t
  • JavaScript 相当于 jQuery 的 keyup() 和 keydown()

    我在 stackoverflow 上看到过这个链接 document ready 相当于没有 jQuery https stackoverflow com questions 799981 document ready equivalent
  • 获取块上的 execFile stdOut

    我正在尝试使用 execFile 并记录提供任务完成百分比的 stdOut 但回调函数 var child require child process child execFile path to the file options func
  • 通过javascript从文件夹中的mp3文件读取id3标签

    我想使用 javascript 从文件夹中的 mp3 文件读取 id3 标签并将其保存到文本文件中 这可能吗 谢谢 This man https github com Tim Smart node id3完成了解析 mp3 文件并提取标签的
  • Alfresco 更新文件 - 错误帖子

    我正在尝试更新 Alfresco 中的文件 我编写了以下代码 var csrf header Alfresco util CSRFPolicy getHeader var csrf token Alfresco util CSRFPolic
  • FullCalendar 重复事件创建重复项

    我正在为我的新网站实现一个日历 我从后端应用程序检索事件并使用 fullcalendar 在模式中显示结果 我还使用 fullcalendar 的重复功能 https fullcalendar io docs recurring event
  • JavaScript 中的平等[重复]

    这个问题在这里已经有答案了 在 javascript 中工作时 有人可以为我提供关于相等 不相等和类型强制测试的良好参考或解释吗 从我读到的内容中 我看到使用 eqeq 与 eqeqeq 有两个思想原则 有些人认为您不应该使用 eqeq 而
  • 用逗号分割字符串到新行

    我有一个像这样的字符串 This is great day tomorrow is a better day the day after is a better day the day after the day after that is
  • JavaScript 检查 Gmail 未读邮件计数

    在javascript中如何获取当前登录的gmail帐户的未读电子邮件数量 相关问题 Google 是否提供有关此类内容的任何文档 这是您正在寻找的文档 http code google com apis gmail docs http c
  • 如何使用 Promise.all 获取 URL 数组?

    如果我有一个 url 数组 var urls 1 txt 2 txt 3 txt these text files contain one two three respectively 我想构建一个如下所示的对象 var text one
  • Shared Web Workers 是否会在单页重新加载、链接导航中持续存在

    共享网络工作者 http www whatwg org specs web apps current work shared workers introduction旨在允许来自同一站点 来源 的多个页面共享单个 Web Worker 但是
  • 为什么 Chrome 中存在 Document.prototype.getElementsByName?

    我所知 getElementsByName是一个定义在中的函数HTMLDocument and HTMLDocument继承自Document and Document继承自Node 那为什么我能看到Document prototype g
  • 如何创建具有动态数量的网格列的 TailwindCSS 网格?

    我正在使用 Vue3 和 TailwindCSS 并希望创建一个具有动态的网格grid cols n 班级 我知道 TailwindCSS 默认情况下最多支持 12 列 但我无法自定义主题 因为列的数量完全是动态的 给出以下纯 HTML J
  • 以小并发批量运行 Promise(一次不超过 X)

    Async 库具有类似的功能每个限制 https github com caolan async eachLimit它可用于将大量作业有效地分布在多个 CPU 核心上 如下所示 var numCPUs require os cpus len
  • 如何将base64字符串转换为文件?

    我使用 jquery 插件来裁剪图像 该插件将裁剪图像并将其作为 Base64 编码字符串提供给我 为了将其上传到 S3 我需要将其转换为文件并将该文件传递到上传函数中 我怎样才能做到这一点 我尝试了很多事情 包括使用解码字符串atob 没
  • 在 React 中存储数据

    我实际上是 React 新手 无法选择在这种情况下存储数据的最佳方式是什么 我有一个包含一些输入的表单 我需要在提交时对这些输入中的所有数据执行一些操作 所有输入都存储在一个组件中 所以 我只需要在提交时获取所有数据 现在我正在尝试选择存储
  • 谷歌地图上太多图钉的最佳解决方案

    这是我的 Google 地图 设置 我从数据库中读取了所有标记的位置 低于 300 将它们作为 Json 发送到 javascript 在 javascript 上 我解析 json 查看标记数组并创建一个新的 google maps Ma
  • 如果满足条件,Angular JS 如何添加 CSS 类

    我正在创建一个截断指令 如果字符超过 10 我就会截断文本字符串 然后它将显示 我的目标是编写一个条件 如果字符少于 10 个 则删除 如果有人对我如何实现此目标有任何想法 我会坚持这一点并接受建议 这是我的代码 var app angul
  • iOS 6 上的 Safari 是否缓存 $.ajax 结果?

    自从升级到 iOS 6 以来 我们看到 Safari 的网页视图擅自缓存 ajax来电 这是在 PhoneGap 应用程序的上下文中 因此它使用 Safari WebView 我们的 ajax电话是POST方法并且我们将缓存设置为 fals
  • 如何强制重新安装 React 组件?

    假设我有一个具有条件渲染的视图组件 render if this state employed return div div

随机推荐

  • 如何删除查询中的第一个单词

    如何删除 MySQL 查询中字段的第一个单词 我尝试使用 SUBSTRING INDEX 但没有结果 该字段为varchar 可以同时包含字母和数字 例子 PWS 20110804 Pos 04应该成为20110804 Pos 04 PWS
  • 如何为特定控件创建自己的自定义提示?

    我需要为特定控件 而不是整个应用程序 创建一个自定义提示窗口 具有自己的颜色和布局 提示文本本身不会连接到该特定的Hint财产控制 按照建议 我编写了一个处理程序CM HINTSHOW 如果控件有此功能 则此方法有效ShowHint Tru
  • 找出与 Elastic Beanstalk 应用程序关联的 EC2 实例?

    有没有办法从仪表板找出与我的 Elastic Beanstalk 应用程序关联的 EC2 实例 我检查了 配置 下的每个页面 但找不到有关运行该应用程序的 EC2 实例的任何信息 您无法通过 Elastic Beanstalk 仪表板查看关
  • C++ 一个带有结构数组的类,不知道我需要多大的数组

    我有一个带有字段的类like名字 年龄 学校等 我需要能够存储其他信息 例如他们旅行过的地方以及旅行的年份 我无法专门声明另一个类来保存 TravelDestination 和年份 所以我认为有一个结构体可能是最好的 这只是一个例子 str
  • Java Scanner - 将换行符读取到字符串中?

    我有一个扫描仪 它接受用户输入 直到按 ctrl d 然后是一个 while 循环 将每个单词添加到字符串中 然后打印它 但我想知道如何在字符串中包含像 n 这样的新行指示符凡是有新行的地方 Scanner sc new Scanner S
  • Node.js async.forEach:无法读取未定义的属性“值”

    我有一种感觉 我犯了一个明显的错误 但找不到它 我得到的错误是 node modules async lib async js 194 iterator x value function err v TypeError Cannot rea
  • 如何在 Rust 中强制恢复被阻止读取文件的线程?

    因为 Rust 没有以非阻塞方式读取文件的内置功能 所以我必须生成一个读取文件的线程 dev input fs0为了获得操纵杆事件 假设操纵杆未使用 没有任何内容可读取 因此读取线程在读取文件时被阻塞 有没有办法让主线程强制恢复读取线程的阻
  • 监听 Flutter 中设备方向的变化

    我正在寻找一种监听手机方向变化的方法 目的是在手机横向时隐藏某些内容 我的布局目前仅按预期以纵向显示 但我希望我的应用程序在设备旋转到横向时执行某些操作 同时保持纵向布局 我尝试过使用OrientationBuilder 但这仅在布局更改为
  • Java 应用程序服务器性能

    我有一个在 Sun Application Server 8 1 又名 SJSAS Glassfish 的前身 上运行的有点过时的 Java EE 应用程序 当有 500 多个并发用户时 应用程序变得慢得令人无法接受 我正在尝试帮助确定大部
  • 如何提取 Instagram 数据

    我正在尝试构建 Instagram 帐户的 Microsoft Access 数据库 并希望提取以下数据等 帐户名称 关注者数量 关注人数 帖子数量 及其日期 图片点赞数 图片评论数 我在构建数据库方面没有任何问题 但想知道是否有一种更简单
  • 如何使 tkinter 画布矩形透明?

    我需要使我的 tkinter 矩形透明 有谁知道这是怎么做到的吗 我试图指定alpha 5 opacity 5 并且我尝试在颜色代码的末尾添加两位数字 fill ff000066 这些东西似乎都不起作用 我找不到正确的语法 import t
  • 在 Ruby on Rails 中将 DateTime 转换为简单日期

    我在数据库中有一个日期时间列 当我向用户显示它时 我想将其转换为一个简单的日期 我怎样才能做到这一点 def shown date to date does not exist but is what I am looking for se
  • php cURL CURLOPT_VERBOSE 不显示有效负载

    虽然curl 的以下输出提供了有用的标头信息 但它不提供有效负载信息 例如 我想在提供的调试信息中看到 jason index json value 1 是否可以以详细模式内联显示有效负载 2 查看 cURL 处理的发送有效负载的最佳方式是
  • Rselenium 中的 rsDriver() 不起作用

    我已将 r 更新到最新版本 并再次安装了 Rselenium 我尝试使用 rsDriver 但端口 4567 有问题 与this https stackoverflow com questions 42316527 probem runni
  • 生成随机长数

    我知道要生成随机长数 我在 Java 中执行以下步骤 Random r new Random return r nextLong 这段代码在 C 中相当于什么 像这样 return long rand
  • 有人对从 ColdFusion 的 serializeJSON 方法到 PHP 的 json_decode 的问题有疑问吗?

    互联网对此没有任何帮助 我们使用 ColdFusion 编码数据serializeJSON并尝试使用 PHP 对其进行解码json decode 大多数时候 这工作得很好 但在某些情况下 json decode回报NULL 我们已经寻找了明
  • WPF 中现有控件的 ControlTemplate

    如何以XAML格式 可视化树 获取WPF中现有控件的ControlTemplate 这是为了帮助在现有模板的帮助下创建新的 ControlTemplate 查看风格窥探者 https github com drewnoakes style
  • Android SQLite - 命名参数

    我正在开发使用 SQLite 作为本地存储的 Android 应用程序 我需要在 sql 查询中使用参数 但我发现的所有示例都包含未命名的参数 如下所示 INSERT INTO SomeTable ColA ColB ColC VALUES
  • facebookConnectPlugin 未定义(ngCordova、Ionic 应用程序)

    我正在尝试将本机 fb 连接添加到我的离子应用程序 我在用着 离子 恩科尔多瓦 http ngcordova com docs plugins facebook http ngcordova com docs plugins faceboo
  • 跨多个标签获取选择和环绕内容

    我有一个脚本可以更改所选文本的背景颜色 但是 当跨多个元素 标签选择文本时 我遇到了问题 我得到的代码是 var text window getSelection getRangeAt 0 var colour document creat