🐟🐟🐟摸鱼时间到!两分钟实现掘金文字版权效果

这是一篇新手向的文章,如果你已经会了可以鼠标右键关闭本文

需求

我们在掘金冲浪时,经常会用到copy and paste(复制粘贴)功能

随便复制一篇掘金文章的内容,可以看到带上了版权相关内容,这是怎么实现的呢

javascript 复制代码
//React 17 
import React from "react" 
import ReactDOM from "react-dom" 
import App from "./App" 
const root = document.getElementById("root") 
ReactDOM.render(<App/>,root) // 卸载组件 ReactDOM.unmountComponentAtNode(root)

// React 18 
import React from "react" 
import ReactDOM from "react-dom/client" 
import App from "./App" 
const root = document.getElementById("root") ReactDOM.createRoot(root).render(<App/>) // 卸载组件 root.unmount()

作者:lyllovelemon  
链接:https://juejin.cn/post/7182382408807743548  
来源:稀土掘金  
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

具体实现

其实非常简单,用原生Javascript即可实现

简化为几个步骤:

  1. 监控用户复制事件
  2. 复制触发时获取选中的文本
  3. 给文本加上版本文字

分别对应以下几个API:

  • window oncopy
  • window.onSelection
  • clipboardData

oncopy

可以在事件绑定中触发

javascript 复制代码
window.addEventListener('oncopy',function(){
  console.log('已经复制了!')
})

onSelection

clipboardData

show me your code

xml 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <div id="app">
        我是测试内容<br/>
        TCP/IP是保证在不同的网络实现信息传输的协议族,TCP面向字节流的、可靠的传输协议,IP用于封包交换数据的协议。TCP/IP不单单指TCP和IP协议,还包括FTP,SMTP,UDP等<br/>
        通过三次握手建立连接,四次挥手断开连接。
    </div>
<script>
    var content = document.getElementById('app');
    content.oncopy = function (event) {
        event.preventDefault(); // 阻止默认事件
        const selection = document.getSelection(); // 获取光标选中的元素
        let selectionContent = selection.toString() // 选中元素内容转为字符串
        let result =
    selectionContent +
    '\n作者:lyllovelemon\n链接:https://juejin.cn/post/7182382408807743548\n来源:稀土掘金\n著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。'; // 字符串拼接版权文字
        event.clipboardData.setData('text/plain',result) // 通过setData将处理过的文本加入剪切板
    }
</script>
</body>
</html>

效果如下

具体代码参考stackblitz.com/edit/js-htc...

相关推荐
tod1139 分钟前
Redis 数据类型与 C++ 客户端实践指南(redis-plus-plus)
前端·c++·redis·bootstrap·html
Sylvia33.9 分钟前
火星数据:棒球数据API
java·前端·人工智能
weixin1997010801629 分钟前
1688商品详情页前端性能优化实战
前端·性能优化
DEMO派41 分钟前
前端常用XSS攻击演示与防御方案解析
前端·xss
问今域中1 小时前
Vue的computed用法解析
前端·javascript·vue.js
扶苏10021 小时前
详解Vue3的provide和inject
前端·javascript·vue.js
武帝为此2 小时前
【Shell 函数库介绍】
前端·chrome
yuki_uix3 小时前
GraphQL 重塑:从 API 语言到 AI 时代的"逻辑神经系统"
前端·graphql
奋斗吧程序媛3 小时前
Vue3初体验(2)
前端·javascript·vue.js
css趣多多3 小时前
vue3的ref响应式,取值的时候自动补全value的设置,以及两种修改方式
前端