如何使用事件 @select 从 Vue.js 的段落中选择一些文本?

2023-12-10

我正在使用 Vue.jsNuxt在 SSR 中,我希望当我突出显示某些文本时获取该文本并对其执行操作。

我找到了一种方法,可以用一些文本来做到这一点<input>但我希望在这里能够从段落中而不是从输入中@select一些文本。

这是我使用的方法<input>:

<template>
  <div>
    <input @select="testFunction2()" value="TEXTE TO SELECT">
  </div>
</template> 

mounted() {
  window.addEventListener('select',this.testFunction2,innerHTML)  
},
methods:{
  testFunction2(event) {
    console.log(event.target.value.substring(event.target.selectionStart, event.target.selectionEnd));
  },

我尝试用“innerHTML”替换“侦听器”代码中的“值”,但它似乎不起作用,

谢谢你!

编辑 : 我使用了特里提出的方法,它在段落中效果很好。 但是,当我想突出显示从 Vue 组件上的 v 循环中的数据库返回的对象上的某些文本时,我收到此错误:“未捕获的类型错误:无法在“节点”上执行“包含”:参数 1 不是”类型为“节点”。 在 HTMLDocument 中。

这是我在 vue 组件上返回的对象,该对象实际上是一个 html 文本,我使用 v-html 将其转换为纯文本:

<li   v-for=" itemJournal in journalContent"> 
 <b-row>
<b-col col lg="10" id="myNoteList" class="htmlNonUser grey-text text- 
darken-2 myNoteList" style=""><p v-html="itemJournal.content" 
ref="target"> </p> 
</b-col>
</b-row>


  mounted:function(){
     document.addEventListener('mouseup', event => {
    if (event.target === this.$refs.target || 
  event.target.contains(this.$refs.target))
    this.testFunction1();
  });
  },

  testFunction1(event){

console.log(window.getSelection().toString());
 },

The select事件仅受类似输入的元素支持。如果您想在常规元素中获取选定的文本,只需收听mouseup事件。 mouseup 事件应该调用一个您只需调用的函数window.getSelection().toString()检索选定的文本。

在下面的例子中,我们绑定mouseup听者document,并在事件处理程序中执行额外的过滤,以便只有感兴趣的元素(在本例中,this.$refs.target) 将触发获取选择的回调:

new Vue({
  el: '#app',
  mounted() {
    document.addEventListener('mouseup', event => {
      if (event.target === this.$refs.target || event.target.contains(this.$refs.target))
        this.testFunction();
    });
  },
  methods: {
    testFunction() {
      console.log(window.getSelection().toString());
    }
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
  <input @select="testFunction" value="Text to select" />
  <p ref="target">Lorem ipsum dolor sit amet</p>
</div>

Update:根据您的回答,您要么想要更新event.target进行比较(例如,如果您不希望触发任何选择testFunction()),或者离开if条件完全退出:

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

如何使用事件 @select 从 Vue.js 的段落中选择一些文本? 的相关文章

  • ReferenceError:找不到变量:需要

    我在加载时遇到问题node modules到我的网页之一 我已经安装了 npm node js 并且我想使用require 函数在我的网站上初始化 Firebase 我不知道为什么 但它抛出引用错误 ReferenceError 找不到变量
  • HTMLImageElement 作为 React Child 无效

    我正在尝试异步加载图像 并且仅在加载图像后才将其显示在 React 应用程序中 componentDidMount const img new Image img onload gt this setState originalImage
  • 我可以从 HTTP 请求中找到无线接入点的 BSSID(MAC 地址)吗?

    假设有人在咖啡店里无线连接到互联网 并向 johnsveryownserver com 发送 HTTP 请求 服务器端 有什么方法可以确定我的MAC地址吗 无线接入点他们连接到什么 请注意 我对他们机器的 MAC 地址不感兴趣 如果我无法使
  • Ext JS - 如何滚动到文本区域的底部

    这是我下面的代码 如何滚动到文本区域的底部 它一定是类似的东西 Ext getCmp output setScrollPosition Ext getCmp output getScrollHeight 这是我的文本区域代码 var myW
  • 如何将中间件绑定到socket.io中的事件

    现在您可以将中间件绑定到io use middleware 但这仅在建立套接字连接时触发 有没有办法在将其传递给事件句柄之前拦截它 就像在expressjs中一样 换句话说 In 快递 js你可以做 app get middleware1
  • ant-d upload中如何为removeFile添加PopConfirm一个图片文件

    我正在使用 Ant d Upload 通过本地系统上传文件 然后单击文件预览图像上的删除图标 图像文件将被删除 我想添加一个弹出确认 所以我尝试在 onRemovefunction 中添加确认作为承诺但它不起作用 它在浏览器中显示警报 on
  • 计算Javascript中两次点击之间的时间

    我想用 javascript 计算属性的两次点击之间的时间 但我不知道如何 例如 a href click here a 如果用户单击多次 假设 5 秒内 我想显示警报 如果有帮助的话我正在使用 jQuery 我对 javascript 不
  • 何时不使用承诺[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在阅读了数十篇关于 es6 Promise 有多伟大以及为什么我们应该实现它们的文章之后 我有这样的感觉 ALL我的 不平凡的 JavaScri
  • 使用模态表单 ajax 超出 HTMLFormElement.toString 的最大调用堆栈大小

    我想使用模态窗口中的 ajax 请求提交表单 单击此链接可打开该模式 a class btn btn primary i class fa fa edit i Write a review a 模态窗口 div class modal fa
  • JavaScript 动画平滑滚动

    默认情况下 当您有这样的片段链接时 a href some url some fragment some text a 浏览器立即向下滚动到该片段 我该如何编程才能使用标准 JS 顺利地向下移动到该片段 这是一个例子 Example htt
  • AJAX:检查字符串是否为 JSON?

    我的 JavaScript 有时会在这一行崩溃 var json eval this responseText 当争论时会导致崩溃eval 不是 JSON 在进行此调用之前有什么方法可以检查字符串是否为 JSON 我不想使用框架 有什么方法
  • KeyboardEvent.keyCode 已弃用。这在实践中意味着什么?

    根据 MDN 我们绝对应该not正在使用 keyCode财产 它已被弃用 https developer mozilla org en US docs Web API KeyboardEvent keyCode https develope
  • jQuery 选择器:为什么 $("#id").find("p") 比 $("#id p") 更快

    该页面的作者 http 24ways org 2011 your jquery now with less suck http 24ways org 2011 your jquery now with less suck断言 jQuery
  • 如何清除WebGL中的矩形区域?

    WebGL 有一个clear清除整个表面的方法 清除表面的特定矩形的最佳方法是什么 例如 我想将一个从 50 50 开始的 100x100 像素框设置为全零 ARGB 0 0 0 0 我现在能想到的就是用一个写入零的片段着色器绘制一个四边形
  • 如何访问另一个 mobx 商店中的 mobx 商店?

    假设以下结构 stores RouterStore js UserStore js index js each of Store jsfiles 是一个 mobx 存储类 包含 observable and action index js只
  • 如何在 e2e AngularJS 测试中进行文件上传?

    在我的一种观点中 我有一个文件上传控件 它支持通过拖放或单击按钮后打开的标准文件对话框上传文件 How to do this in my e2e tests1 1 Just one of the two options will be en
  • window.showModalDialog 的等效跨浏览器解决方案是什么?

    window showModalDialog 的等效跨浏览器解决方案有哪些 showModalDialog 在 IE 和 FF 3 中引入 我个人认为没有 但是有很多 UI 工具包提供了这样的功能 例如jQuery UI http jque
  • ng-model 和值组合不适用于输入文本框

    我有两个输入文本框 我需要组合在两个文本框中输入的值并将其显示在第三个文本框中 如果我只使用value在第三个文本框中 Box 1
  • 需要js、d3 和 nvd3 集成

    我面临整合的问题要求 questions tagged requirejs with d3 questions tagged d3 and nvd3 questions tagged nvd3 我找到了一个使用 require 的简单解决方
  • 如何更改订阅值?使用 rxJS

    我正在创建一个计时器 需要你的帮助 我刚刚学习 Angular 和 rxJS 对此我有一些疑问 我正在创建一个具有启动 停止 暂停 重置功能的计时器 并且 btn Reset 必须将我的计时器 暂停 到 300 毫秒 怎么做 D 我的启动定

随机推荐

  • 编辑文件中的特定行

    我有一个这样的txt文件 shoes 12 pants 33 jacket 26 glasses 16 t shirt 182 我需要编辑夹克的数量 例如从 26 到 42 所以 我编写了这段代码 但我不知道如何编辑包含 jacket 一词
  • Blackberry webview 无法连接到互联网和/或显示网页

    我正在使用 Eclipse 和 Blackberry JRE 7 0 创建一个简单的应用程序 如下所示 http docs blackberry com en developers deliverables 11958 Configure
  • 未找到目标的伞标头

    关于堆栈溢出有答案 但没有一个对我有用 这是一个 Swift 2 0 项目 我使用的是 Xcode 7 2 1 重现问题的步骤 创建单一视图项目 转到项目导航器中的目标 添加一个名为 Common 的框架模块 添加另一个名为 Logger
  • 斜杠(“/”)是否等同于 HTTP URL 路径部分中的编码斜杠(“%2F”)

    我有一个网站可以治疗 and 2FURL 的路径部分 而不是查询字符串 中的情况有所不同 根据 RFC 或现实世界 这是一件坏事吗 我问这个问题是因为我不断遇到我正在使用的 Web 框架 Ruby on Rails 及其下面的层 Passe
  • 尾随零的数量

    我写了一个函数尾随零 n 中 返回数字的二进制表示形式中尾随零的数量 Example 4二进制是100 所以本例中的函数返回2 unsigned trailing zeroes int n unsigned bits bits 0 whil
  • Lucene 有快速、准确的荧光笔吗?

    我一直在使用 Java Lucene 荧光笔 在沙箱包中 一段时间 然而 当涉及到匹配搜索结果中的正确术语时 这并不是非常准确 它适用于简单查询 例如搜索两个单独的单词将突出显示结果中的两个代码片段 但是 它对于更复杂的查询表现不佳 在最简
  • Angular:从资产文件夹中读取所有文件

    tltr 我可以从角度访问资产目录吗 我的文件夹中有一堆 SVGsrc assets icons我使用的mat icon 唯一的缺点是当我添加新图标时 我必须添加文件 并且必须将文件名添加到一个数组中 我用该数组循环将其添加到matIcon
  • 如何使用星号等引导图标来给出星级评定?

    如何使用 Bootstrap 图标通过 css 或 jquery 给出星级评级 由于我被告知不要为此使用任何插件 因此我对如何更改星形图标的颜色以及如何使星形图标从起始星形到单击星形的颜色感到困惑 你实际上可以这样做PURE CSS 演示小
  • 打字稿限制对象属性的数量

    是否可以限制对象属性的数量 假设我想限制对象只有一个字符串属性 具有任何名称 我可以这样做 index string any 限制属性的类型 但是可以限制属性的数量吗 Stackoverflow 上这个问题有很多答案 包括这个详细的 但它们
  • Java OpenCV + Tesseract OCR“代码”识别

    我正在尝试自动化一个流程 其中有人手动将代码转换为数字代码 然后我开始阅读有关 OCR 的内容 所以我安装了 tesseract OCR 并在一些图像上进行了尝试 它甚至没有检测到接近代码的东西 在阅读了 stackoverflow 上的一
  • 从 GitHub 克隆存储库

    我正在开发一个项目 需要在 div 中添加拖放功能 然后我开始查看拖放功能的库 这些库也应该适用于移动设备 并找到了一个这样的库 名为Dragula 我尝试在我的机器中克隆存储库 我下载了 git 看起来像这样 但问题是我无法从 GitHu
  • .htaccess - 使目录不可见

    我有一个 htaccess 文件 当前如下所示
  • SwiftUI 列表颜色背景

    如果我列出静态项目 我无法更改视图的背景颜色 这是我的代码 NavigationView ZStack Color AppBackgroundColor edgesIgnoringSafeArea all List Section head
  • Crosswalk 使 Visual Studio Android 模拟器崩溃

    这段代码 public class MainActivity extends Activity Override protected void onCreate Bundle savedInstanceState super onCreat
  • Xamarin 表单:ios 的启动器图标

    我正在尝试从 Mac 设置 xamarin forms ios 项目的启动器图标 我执行了以下操作 但仍然显示默认图标 1 在解决方案资源管理器中双击 Info plist 文件将其打开进行编辑 2 向下滚动到应用程序图标部分 3 From
  • 如何在 Jquery 成功方法中获取“最后插入数据库的 ID”?

    好吧 在我的添加联系人表单中 我使用 Jquery 和 Php 将数据插入到 Mysql 数据库 已成功将数据插入数据库 现在我要将成功的页面重定向到index php cdid last id 但我怎样才能得到这个jquery成功方法中的
  • 不区分大小写的 utf8 选择

    在 SQLite 中我想不区分大小写 SELECT LIKE name 对于正常的拉丁名称工作正常 但是当名称为 UTF 8 且包含非拉丁字符时 选择将区分大小写 如何使其像拉丁字符一样不区分大小写 附注我的 sqlite 是 v3 并且我
  • 是 Azure DevOps 构建管道,有没有办法从另一个作业中取消一个管道作业?

    我有一个 Azure DevOps 构建管道 其中包含两个代理作业 我将其称为作业 A 和作业 B 我希望这些作业同时运行 但如果作业 A 失败 那么我不需要作业 B 运行完成 有没有办法向作业 A 添加一个任务 如果作业 A 的任何任务失
  • 通过key获取字典值

    如何通过函数上的键获取字典值 我的功能代码 以及我尝试的命令不起作用 static void XML Array Dictionary
  • 如何使用事件 @select 从 Vue.js 的段落中选择一些文本?

    我正在使用 Vue jsNuxt在 SSR 中 我希望当我突出显示某些文本时获取该文本并对其执行操作 我找到了一种方法 可以用一些文本来做到这一点