主页
主页

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

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

一 方法实现

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]

支持一下
扫一扫,支持chen
  • 微信扫一扫
  • 支付宝扫一扫