跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 前端-鼠标滑动实现高亮与复制
未分類
16 1 月 2020

前端-鼠标滑动实现高亮与复制

前端-鼠标滑动实现高亮与复制

資深大佬 : Oilybear 53

大家好,最近的项目需求中,有一项前端需求困扰着弟弟。

项目背景:

前端 React 框架

需求如下:

  1. 鼠标滑动选中一段文字,实现对选中文字的高亮,并复制文字

问题:

  1. 是否有现成的控件可以支持这一需求
  2. 如果需要自己手写控件,可以通过什么样的实现思路去实现 不知道各位朋友有什么高招
大佬有話說 (11)

  • 資深大佬 : findsomeone

    我觉得应该不会很难? 比如现在各种 chrome 翻译插件都有划词翻译 而且一般也开源 参考下监控事件?

  • 資深大佬 : orzorzorzorz

    复制的话,简单粗暴就是 document.execCommand(‘copy’)。链接在[这里]( https://stackoverflow.com/questions/6300213/copy-selected-text-to-the-clipboard-without-using-flash-must-be-cross-browser)
    改高亮的话有两种思路,一种是直接改 ::selection,一种是去掉 ::selection 的默认样式,想办法获得选中时的字,然后改这些字所在 dom 的样式。

  • 資深大佬 : orzorzorzorz

    这跟 re 不 react 没啥关系,市面上我是没见过有这样的组件的。

  • 資深大佬 : RV0n

    window.getSelection()获取选中文字 再走正则匹配 匹配文字显示高亮 再利用 clipboard 实现复制

  • 資深大佬 : orzorzorzorz

    https://github.com/bvaughn/react-highlight-words
    查了下,是有个相关的库,看上去能用。

  • 主 資深大佬 : Oilybear

    @orzorzorzorz 谢谢大佬,刚刚我在需求表述上出现了问题,复制文字如果变化为获取文字相对一段文字的位置的话。不知有什么好的思路实现。例子已添加到附言中。

  • 主 資深大佬 : Oilybear

    @findsomeone 好的,我去参考一下

  • 資深大佬 : learnshare

    MDN: selection & range

  • 資深大佬 : Cbdy

    浏览器给你提供了 onSelect 事件

  • 資深大佬 : netnr

    https://www.netnr.com/run/code/5068762375722166316

    写了个 单节点 选中高亮的 demo,跨节点需要更复杂的逻辑判断,已拿到选中内容如何复制应该不成问题了

  • 資深大佬 : oubenruing

    Range 了解下 https://developer.mozilla.org/zh-CN/docs/Web/API/Range

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具