当前位置: 首页 > news >正文

前端开发_怎么禁止用户复制内容

在开发前端项目时,有时会有这种要求,禁止用户复制文本内容,本文分享几种简单的方法。

一、JS阻止默认事件

禁用复制:

document.addEventListener('copy', e => {e.preventDefault()
})

禁止剪切:

document.addEventListener('cut', function(e) {e.preventDefault();
});

禁用鼠标右键复制:

document.addEventListener('contextmenu', function(e) {e.preventDefault();
});

禁用键盘快捷键复制:

document.addEventListener("keydown", function (e) {if ((e.ctrlKey || e.metaKey) && e.key === "c") {e.preventDefault();}});


二、CSS样式控制

禁用键盘快捷键:,让用户无法选中对应内容。仅提供基础防护,敏感内容应通过服务端加密或权限控制实现真正的内容保护。前端防复制主要适用于阻止普通用户的随意复制行为。

.no-copy {user-select: none;position: relative;
}
.no-copy::after {content: "禁止复制";position: absolute;right: -120px;
}

user-select是一个CSS属性,用于控制用户能否选择页面上的文本内容。这个属性在创建特殊交互体验或保护内容时非常有用。

user-select属性取值及效果

取值描述示例效果
auto默认值。文本是否可选取决于浏览器默认行为常规文本选择
none元素及其子元素的文本不可被选中完全禁止文本选择
text文本可以被选中常规文本选择
all点击元素会选中其所有文本内容(包括子元素)单击选中整块内容
contain允许在元素内选择文本,但选择范围被限制在该元素边界内(实验性特性)选择不会扩展到元素外部
element非标准值(IE特有),效果类似containIE浏览器中的限制选择

三、 Canvas渲染文本

const canvas = document.createElement('canvas');
const ctx = canvas.getContext('2d');
ctx.fillText("文本内容不可复制", 10, 50);
document.body.appendChild(canvas);

四、加上版权信息

允许复制,但是会加上版权信息。

document.addEventListener('copy', function(e) {const selection = window.getSelection().toString();const copyright = `\n\n----------------\n文章来源:@开心小老虎`;e.preventDefault();e.clipboardData.setData('text/plain', selection + copyright);
});

http://www.lryc.cn/news/611796.html

相关文章:

  • vue3 el-dialog自定义实现拖拽、限制视口范围增加了拖拽位置持久化的功能
  • 【前端开发】三. JS运算符
  • 2.6 sync
  • vue3 find 数组查找方法
  • JSON巴巴 - 专业JSON格式化工具:让任何JSON都能完美格式化
  • Excel将整列值转换为字符串
  • Git 乱码文件处理全流程指南
  • 通过最严时序标准,再登产业图谱榜首,TDengine 时序数据库在可信数据库大会荣获双荣誉
  • Apache Flink 的详细介绍
  • 时序数据库的发展现状与未来趋势
  • Excel单元格设置下拉框、选项背景
  • 【OSCP】- Monitoring 靶场学习(Proving Grounds Play)
  • SpringBoot 整合Langchain4j 对接主流大模型实战详解
  • 科技云报到:Agent应用爆发,谁成为向上托举的力量?
  • 第一章-网络信息安全概述
  • 数据赋能(381)——数据挖掘——支持异类数据库
  • C语言的数组与字符串练习题2
  • GitHub 趋势日报 (2025年08月05日)
  • Gitlab+Jenkins+K8S+Registry 建立 CI/CD 流水线
  • 8.6 CSS3rem布局
  • npm scripts 使用指南
  • 解决在IDEA、webstorm里Git特别慢的问题
  • 自动驾驶系统的网络安全风险分析
  • vasp计算弹性常数
  • MyBatis核心配置深度解析:从XML到映射的完整技术指南
  • 构建语义搜索引擎:Weaviate的实践与探索
  • 实名认证 —— 腾讯云人脸识别接口
  • Redis集群核心原理与实战解析
  • 2025年08月 GitHub 热门项目推荐
  • 【Figma】一.初识设计工具Figma,简单尝试和笔记