JavaScript 文本选择事件

2024-04-11

这不仅适用于 Google Chrome 扩展,也适用于 JavaScript

我正在编写一个 Chrome 扩展程序,其中当突出显示文本并显示上下文菜单时,我会在上下文菜单中显示我的项目,单击该项目时应处理所选文本。

打开上下文菜单并选择我的选项后,我得到了所有值为零和空的空对象。

因此,我想实现某种机制,一旦用户在选择文本后释放鼠标,就会缓冲文本选择,以便可以触发事件,如果有任何事件触发,我可以在全局变量中复制所选文本,并且可以稍后处理。

window.getSelected()当我使用单独的测试代码进行测试时工作正常,但在使用我的扩展程序时,我调出上下文菜单,但无法获取实际选定的文本。

我在文档中看到的所选文本将是文本和 html。

请提出建议...


这里我粘贴了我正在做的事情。当我单击保存到单词提醒时,我得到一个空字符串:

这是其余的代码:

<script>
chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {


    switch(request.message)
    {
        case 'getSelection':
            sendResponse({data: window.getSelection().toString()});
        break;
        
        case 'createMenu':
            seecon();
            break;
        
        default:
            sendResponse({data: 'Invalid arguments'});
        break;
    }
});

function conOnClick(info,tab)
{

/*
    chrome.extension.sendRequest(tab.id, {method: 'getSelection'}, function(response){
        alert(response.data);
    });
*/  
}


//function seecon()
{
var contexts = ["selection"];
for (var i = 0; i < contexts.length; i++) {
  var context = contexts[i];
  var title = "Save to Word Reminder";
  var id = chrome.contextMenus.create({"title": title, "contexts":[context],
                                       "onclick": conOnClick});
  
}

}



</script>

我只需在文档上设置一个 mouseUp 事件,然后检查是否有任何选择(如果有,则该选择是否与之前的选择不同)。

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

JavaScript 文本选择事件 的相关文章

  • Azure Functions [JavaScript / Node.js] - HTTP 调用,良好实践

    从我的 Azure 函数 在 Node js 中运行 由 EventHub 消息触发 中 我想向某个外部页面发出发布请求 就像是 module exports function context eventHubMessages var ht
  • WebGL iOS 渲染为浮点纹理

    我正在尝试在 iOS Safari 上的 WebGL 中渲染浮点纹理 而不是在本机应用程序中 我已经设法让 iOS 读取手动 例如从 JavaScript 创建的浮点纹理 但是当我创建浮点类型的帧缓冲区并使用 GPU 渲染到其中时 它不起作
  • 如何删除事件监听器?

    下面是我的事件监听器代码 window addEventListener beforeunload function e if sessionStorage token abide call api 如果我想删除这个事件监听器 我该怎么办
  • 如何检测不渲染 .png 透明的浏览器

    我有这段代码可以根据一周中的某一天渲染图像 但在 IE6 及更低版本以及可能其他一些浏览器中 它不会呈现 png 不透明度 所以我想稍微改变一下 这样它就会检测到不渲染 alpha 透明度的浏览器 并告诉他们加载这个图像 img horar
  • 解释 javascript 中的奇怪行为

    我在推特上看到了这个 我也无法解释 定义一个onload函数按以下两种方式工作 1 JSFiddle http jsfiddle net 6rq9k 2 JSFiddle http jsfiddle net 6rq9k 1
  • 如何将元素的每个单词包装在span标签中?

    div date contents filter function return this nodeType 1 wrap span span 我是新手 认为代码可以解决问题 但它将所有内容都包含在 span 像这样 div class d
  • Javascript:如何根据 html 标签扩展用户选择?

    乐代码 http jsfiddle net frf7w 12 http jsfiddle net frf7w 12 所以现在 当前的方法将完全按照 选择的方式获取所选文本 并添加标签 以便在显示时页面不会爆炸 但我想做的是 就是说 当用户选
  • Sequelize 4.3.2 n:m(多对多)关联:未处理的拒绝 SequelizeEagerLoadingError

    我有 3 个模型 用户 项目 UserProject module exports function sequelize DataTypes var User sequelize define User title DataTypes ST
  • 如何在WebBrowser控件中注入Javascript?

    我试过这个 string newScript textBox1 Text HtmlElement head browserCtrl Document GetElementsByTagName head 0 HtmlElement scrip
  • 无法从 Twin.macro 中的 Prop 获取值

    您可以在这里查看我正在尝试执行的操作的示例 https codesandbox io s vibrant leaf qj8vz https codesandbox io s vibrant leaf qj8vz 注意 这个特定的例子使用双宏
  • Hydrate with RTK Query 确实会抛出错误

    我有一个非常简单的组件来显示来自本地 API 的数据 使用 Nextjs API 路由制作 我使用 RTK 查询来获取数据 const api createApi reducerPath data baseQuery fetchBaseQu
  • 将数字限制为段的最优雅的方法是什么?

    比方说x a and b是数字 我需要限制x到段的边界 a b 换句话说 我需要一个钳位功能 https math stackexchange com q 1336636 clamp x max a min x b 有人能想出一个更易读的版
  • 如何按值删除数组中的多个项目?

    我正在尝试做一个removeAll 函数 它将删除具有该特定值 而不是索引 的数组的所有元素 当我们对循环进行任何更改时 棘手的部分就出现了 索引往往会移动 使其很难像我们想要的那样工作 并且每次更改时都重新启动循环 这在大数组上效率非常低
  • apollo 客户端从存储中删除而不发生突变

    我需要通过 id 从本地存储中删除一条 记录 而不使用突变 因为服务器不支持突变 我尝试像这样手动访问商店 delete this apolloClient store getState apollo data 1112 这会删除记录 但是
  • Material.Angular.io mat-autocomplete [displayWith] 函数更新范围变量

    我遇到了一个问题 我可以在实例化 mat autocomplete 的组件控制器中访问本地声明的变量 我面临的问题是局部变量被困在这个范围内 我无法更新它们 有关更新 mat autocomplete 范围变量的任何想法或想法 最终我要做的
  • Jquery获取每个div的子子div并将信息抓取到数组中

    我有一些看起来像这样的 html div div class sub main div div
  • 替换打字稿中字符串中字符的所有实例?

    我正在尝试用 x 字符替换电子邮件中的所有句号 例如 电子邮件受保护 cdn cgi l email protection 将变为 myxemail emailxcom 电子邮件设置为字符串 我的问题是它不只是替换句号 而是替换每个字符 所
  • 在部分渲染时执行 JavaScript

    我有一些 JavaScript 代码 我想在用户单击其文件夹之一后执行 它会触发 show 操作和 show js erb 从而呈 现部分内容 Show js erb 当用户单击其文件夹之一时触发 如下所示 body append 它成功注
  • 使用 Javascript 检测 Pepper (PPAPI) Flash

    我们使用的是专有的文档查看器 它与某些 Chrome 版本中的 Pepper 版本的 Flash 配合得不太好 所以我希望能够检测到它并重定向到不同格式的相同内容 由于这个版本似乎落后于 NPAPI 版本 所以我一直在使用闪光检测 http
  • 允许 iframe 跨域链接到目标父框架

    我有 2 个域 域 1 上的一个页面使用 iframe 加载域 2 中的内容 如何允许来自domain2 iframe 内 的链接在domain1 的完整父框架中打开 我一直在关注IE和w3c的新沙箱属性 http www w3 org T

随机推荐

  • 如何在 laravel 4 中使用 php-FFMpeg?

    我是 Laravel 4 的新手 我已经安装了php ffmpeg在我本地的 Laravel 设置中 但我需要有关如何在 Laravel 4 中使用此 ffmpeg 的帮助 假设你已经拥有ffmpeg安装在本地主机服务器上 然后在 Lara
  • 我应该在 Mongoose 中一一返回数组还是数据

    我有一个使用 IOS 创建的简单应用程序 它是一个问卷应用程序 每当用户单击播放时 它都会调用对 node js express 服务器的请求 从技术上讲 用户单击答案后 它将转到下一个问题 我很困惑使用哪种方法来获取问题 问题 一次获取所
  • 忽略 git 项目上的任何“bin”目录

    我有一个这样的目录结构 git gitignore main tools 在 main 和 tools 以及任何其他目录中 在任何级别 都可以有一个 bin 目录 我想忽略它 并且我也想忽略它下面的所有内容 我已经在 gitignore 中
  • 通过 RDP 的 Azure VM 仅显示黑屏和 cmd

    我有一个 Azure 虚拟机 当我通过 RDP 登录时 我只能看到黑屏 并且 CMD 控制台已打开 难道没有探索者吗 VM OS spec Operating system Windows Publisher MicrosoftWindow
  • 如何在 Prolog 中求反

    我是 PROLOG 新手 正处于练习的开始阶段这一页 https sites google com site prologsite prolog course a first glimpse 给定规则parent X Y 和male X 我
  • 使用 CUDA __device__ 函数时出现链接器错误 2005 和 1169(多重定义的符号)(默认情况下应内联)

    这个问题与以下问题有很大关系 A 如何将CUDA代码分成多个文件 https stackoverflow com questions 2090974 how to separate cuda code into multiple files
  • 能否为当前会话禁用 Oracle 触发器?

    我想在将数据插入表之前禁用表上的特定触发器 但是不影响其他用户这可能会改变同一个表中的数据 我找不到任何有记录的方法来做到这一点 这是Oracle 11g 我能想到的最佳解决方案是创建一个会话变量 并让我的应用程序将其设置为触发器在执行工作
  • 解析 XML 时拦截 Xstream

    假设我有一个像这样的简单 Java 类 public class User String firstName String lastName public String getFirstName return firstName publi
  • 更改 [DataType.Currency] 呈现 html 的方式

    目前 当将 DataAnnotation 货币应用于属性时 它会使用 DisplayFor 将其呈现为 html cshtml div Html DisplayFor m gt m Price div html div U 4 193 99
  • BufferedReader会将整个文件加载到内存中吗?

    class LogReader public void readLogFile String path BufferedReader br new BufferedReader new FileReader path String curr
  • CherryPy3 和 IIS 6.0

    我有一个使用 Cherrypy 框架的小型 Python Web 应用程序 我绝不是网络服务器方面的专家 我在 Ubuntu 服务器上使用 mod python 让 Cherrypy 与 Apache 一起工作 不过 这一次我必须使用 Wi
  • 列出具有重复字母的字符串的唯一排列的算法

    例如 字符串 AAABBB 将具有排列 阿巴巴 巴巴巴 阿巴巴 ETC 生成排列的好算法是什么 它的时间复杂度是多少 这不是完整的答案 只是一个想法 如果您的字符串的固定数量只有两个字母 我将使用二叉树和良好的递归函数 每个节点都是包含名称
  • [self.tableview reloadData];导致闪烁

    问题是 UI 出现然后更新 产生闪烁效果 我希望 UI 仅在用户进入应用程序时更新一次 因此我在 ViewDidLoad 中重新加载 这是代码 任何帮助如何消除这种闪烁 一些代码示例会有所帮助 void viewDidLoad super
  • 动态透视查询

    以下查询执行良好 select LIC PF from select from tbl DeductionHead up pivot sum DeductionPerAmount for DeductionHead In LIC PF as
  • 根据列值重复行 N 次

    我有下表 Table A ID ProductFK Quantity Price 10 1 2 100 11 2 3 150 12 1 1 120 我需要根据数量列值选择重复行 N 次 所以我需要以下选择结果 ID ProductFK
  • 如何在 Xamarin Forms 导航中 PopAsync 超过 1 页?

    在我的应用程序中 我使用NavigationPage在某个阶段我想返回到堆栈中的上一页 这是我的结构 导航页面 gt 第1页 gt 第2页 gt 第3页 gt 第4页 我怎么能够PopAsync直接从第 4 页返回第 2 页而不经过第 3
  • Tornado - RequestHandler 的 get_argument()、get_query_argument() 和 get_body_argument() 之间有什么区别?

    何时使用RequestHandler get argument RequestHandler get query argument and RequestHandler get body argument 是什么use case对于他们每个
  • HTML 标记中的 Bootstrap 3 模式放置

    引导程序 docs http getbootstrap com javascript modals 说 始终尝试将模式的 HTML 代码放置在文档的顶级位置 以避免其他组件影响模式的外观和 或功能 这是否意味着将模态框放在我的最顶部标签 如
  • 如何在同一配置块中附加到 Jenkins job dsl 创建的节点?

    我有一些 jobDsl 看起来像这样 multibranchPipelineJob foo bar branchSources git remote https github com jenkinsci job dsl plugin git
  • JavaScript 文本选择事件

    这不仅适用于 Google Chrome 扩展 也适用于 JavaScript 我正在编写一个 Chrome 扩展程序 其中当突出显示文本并显示上下文菜单时 我会在上下文菜单中显示我的项目 单击该项目时应处理所选文本 打开上下文菜单并选择我