vue 简单实现屏蔽移动端复制功能

博客介绍了在Vue项目中如何防止移动端用户复制内容,列举了多种方法,包括覆盖、阻止默认事件、利用touch事件及长按事件,其中部分方法在特定环境下效果有限,提供了一种使用透明罩层的思路,但可能需要解决布局问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

由于医生提供的资料都比较宝贵,所以要求在移动端不能复制。特地总结一下网上和自己的几个方法。

一 方法实现

1.第一种覆盖大多数的方法

1
2
3
4
5
6
7
8
9
10
 *{
 -webkit-user-select:none;
 -khtml-user-select:none;
 -moz-user-select:none;
 -ms-user-select:none;
 user-select:none;	#但是安卓不行
 }
   input {
  -webkit-user-select:auto; /*webkit浏览器*/
}

2.第一种在上面,第二种

1
2
3
4
5
<div onselectstart="return false;">
  -webkit-touch-callout:none;
 -moz-touch-callout:none;
 -ms-touch-callout:none;
 touch-callout:none;

 

这种在微信浏览器安卓不能复制,但是在安卓的网页上依旧可以复制

3.使用原生js阻止默认事件

1
2
3
document.oncopy = function(e){
      e.preventDefault();
    }

 

在多数安卓机子都无效

4.第四种,触摸的默认事件是滑动:

1
ontouchstart="return false"

 

5.在vue里面实现,阻止默认的长按事件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
##html

<div v-longtap="conpytouch">
hello
</div>

###vue

export default{
data(){...},
components:{},
method:{
copytouch:function(e,s){
        e.preventDefault=true
        alert("长按了!!")//这里可进行复杂的处理,我
      到这步已经莫名其妙好了},
}
}

 

6.做一个透明罩,增加一个div,设置它的z-index为一个比较大的值

1
2
3
4
5
6
7
div{
height:100%;
width:1000%;
position:absolute;
z-index:1000;#越大越在上面
opacity:0;#越大越不透明
}

 

这里还没实验过,但是思路和主要的两个元素在上面了,可能布局有问题,需要调整

二 相关基础知识

1.touch事件

以下是四种touch事件

1
2
3
4
5
touchstart:     //手指放到屏幕上时触发
touchmove:      //手指在屏幕上滑动式触发
touchend:       //手指离开屏幕时触发
touchcancel:    //系统取消touch事件时触发

touch事件的详细介绍:[http://caibaojian.com/mobile-touch-event.html]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

狂风是我的热情

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值