服务器之家:专注于服务器技术及软件下载分享
分类导航

node.js|vue.js|jquery|angularjs|React|json|js教程|

服务器之家 - 编程语言 - JavaScript - JS禁用右键、禁用Ctrl+u、禁用Ctrl+s、禁用F12的实现代码

JS禁用右键、禁用Ctrl+u、禁用Ctrl+s、禁用F12的实现代码

2021-10-20 14:17骑着金猪看日出 JavaScript

最近项目需要屏蔽客户端的一些操作,加大查看源码等难度,特整理一下这个js,也防止客户端用户误操作,破解方放也很简单这里就不多说了

先来两个简单粗暴的

第一个常用的函数代码

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function keycodes(){
 // 禁止右键
 document.oncontextmenu=function(){return false};
 document.onkeydown = function(e) {
   e = window.event || e;
   var k = e.keyCode;
   //屏蔽ctrl+u,F12键
   if ((e.ctrlKey == true && k == 85) || k == 123) {
     e.keyCode = 0;
     e.returnValue = false;
     e.cancelBubble = true;
     return false;
   }
 }
}

第二种方法:

?
1
2
3
4
5
6
7
8
9
10
11
12
var arr = [123, 17, 18];
document.oncontextmenu = new Function("event.returnValue=false;"),//禁用右键
document.onselectstart = new Function("event.returnValue=false;"),//禁用选中
window.onkeydown = function (e) {
 var code = e.keyCode;
 if (arr.indexOf(code) > -1) {
 console.log("中招了", code);
 e.preventDefault();
 }
}, window.oncontextmenu = function (e) {
 e.preventDefault();
}

第三种方法:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var arr = [123, 17, 18];
document.oncontextmenu = new Function("event.returnValue=false;"),//禁用右键
 
window.onkeydown = function (e) {
 var keyCode = e.keyCode || e.which || e.charCode;
 var ctrlKey = e.ctrlKey || e.metaKey;
 console.log(keyCode + "--" + keyCode);
 if (ctrlKey && keyCode == 85) {
 console.log("ctrl+u");
 e.preventDefault();
 }
 if (arr.indexOf(keyCode) > -1) {
 console.log("其他");
 e.preventDefault();
 }
 //e.preventDefault();
 //return false;
}

一些常用的代码

1、实现禁止选中文字。

?
1
2
3
4
5
6
<script>
//网站禁止选择文字
  document.body.onselectstart = function() {
  self.event.returnValue=false
};
</script>

2、实现禁止鼠标右键。

?
1
2
3
4
5
6
<script>
  //网站禁止右键
  document.body.oncontextmenu = function() {
  self.event.returnValue=false
};
</script>

3、实现禁止F12审查元素。

?
1
2
3
4
5
6
7
8
9
10
<script>
    //按键触发
document.onkeydown = function(){
  //禁止 F12
  if (window.event && window.event.keyCode == 123) {
  event.keyCode = 0;
  event.returnValue = false;
  }
  }
</script>

4、实现禁止Ctrl+U查看源代码。

?
1
2
3
4
5
6
7
8
9
<script>
    //按键触发
document.onkeydown = function(){
  //禁止ctrl+u
  if (event.ctrlKey && window.event.keyCode==85){
  return false;
  }
  }
</script>

5、实现禁止Ctrl+S网页另存为。

?
1
2
3
4
5
6
7
8
9
<script>
    //按键触发
document.onkeydown = function(){
    //禁止ctrl+s
  if (event.ctrlKey && window.event.keyCode==83){
  return false;
  }
  }
</script>

6、实现禁止F5刷新页面。

?
1
2
3
4
5
6
7
8
9
10
<script>
    //按键触发
document.onkeydown = function(){
    //禁止 F5
  if (window.event && window.event.keyCode == 116) {
  event.keyCode = 0;
  event.returnValue = false;
  }
  }
</script>

all、如果想同时实现以上的几种效果,如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<script>
    //按键触发
document.onkeydown = function(){
  //禁止ctrl+u
  if (event.ctrlKey && window.event.keyCode==85){
  return false;
  }
  //禁止 F12
  if (window.event && window.event.keyCode == 123) {
  event.keyCode = 0;
  event.returnValue = false;
  }
    //禁止ctrl+s
  if (event.ctrlKey && window.event.keyCode==83){
  return false;
  }
    //禁止 F5
  if (window.event && window.event.keyCode == 116) {
  event.keyCode = 0;
  event.returnValue = false;
  }
  }
  //网站禁止右键
  document.body.oncontextmenu = function() {
  self.event.returnValue=false
};
//网站禁止选择文字
  document.body.onselectstart = function() {
  self.event.returnValue=false
};
</script>

JavaScript屏蔽右键F12和Ctrl+U等绝大部分按键

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
<script type='text/javascript'>
//屏蔽右键菜单
document.oncontextmenu = function (event) {
  if (window.event) {
    event = window.event;
  }
  try {
    var the = event.srcElement;
    if (!((the.tagName == "INPUT" && the.type.toLowerCase() == "text") || the.tagName == "TEXTAREA")) {
      return false;
    }
    return true;
  } catch (e) {
    return false;
  }
}
//屏蔽粘贴
document.onpaste = function (event) {
  if (window.event) {
    event = window.event;
  }
  try {
    var the = event.srcElement;
    if (!((the.tagName == "INPUT" && the.type.toLowerCase() == "text") || the.tagName == "TEXTAREA")) {
      return false;
    }
    return true;
  } catch (e) {
    return false;
  }
}
//屏蔽复制
 
//屏蔽剪切
document.oncut = function (event) {
  if (window.event) {
    event = window.event;
  }
  try {
    var the = event.srcElement;
    if (!((the.tagName == "INPUT" && the.type.toLowerCase() == "text") || the.tagName == "TEXTAREA")) {
      return false;
    }
    return true;
  } catch (e) {
    return false;
  }
}
//禁止f12
 
function fuckyou() {
  window.close(); //关闭当前窗口(防抽)
  window.location = "about:blank"; //将当前窗口跳转置空白页
}
//禁止Ctrl+U
var arr = [123, 17, 18];
document.oncontextmenu = new Function("event.returnValue=false;"), //禁用右键
 
  window.onkeydown = function (e) {
    var keyCode = e.keyCode || e.which || e.charCode;
    var ctrlKey = e.ctrlKey || e.metaKey;
    console.log(keyCode + "--" + keyCode);
    if (ctrlKey && keyCode == 85) {
      e.preventDefault();
    }
    if (arr.indexOf(keyCode) > -1) {
      e.preventDefault();
    }
  }
 
function ck() {
  console.profile();
  console.profileEnd();
  //我们判断一下profiles里面有没有东西,如果有,肯定有人按F12了,没错!!
  if (console.clear) {
    console.clear()
  };
  if (typeof console.profiles == "object") {
    return console.profiles.length > 0;
  }
}
 
function hehe() {
  if ((window.console && (console.firebug || console.table && /firebug/i.test(console.table()))) || (
      typeof opera ==
      'object' && typeof opera.postError == 'function' && console.profile.length > 0)) {
    fuckyou();
  }
  if (typeof console.profiles == "object" && console.profiles.length > 0) {
    fuckyou();
  }
}
hehe();
window.onresize = function () {
  if ((window.outerHeight - window.innerHeight) > 200)
    //判断当前窗口内页高度和窗口高度,如果差值大于200,那么呵呵
    fuckyou();
}
 
document.onkeydown = function (event) {
  if ((event.keyCode == 112) || //屏蔽 F1
    (event.keyCode == 113) || //屏蔽 F2
    (event.keyCode == 114) || //屏蔽 F3
    (event.keyCode == 115) || //屏蔽 F4
    // (event.keyCode == 116) || //屏蔽 F5
    (event.keyCode == 117) || //屏蔽 F6
    (event.keyCode == 118) || //屏蔽 F7
    (event.keyCode == 119) || //屏蔽 F8
    (event.keyCode == 120) || //屏蔽 F9
    (event.keyCode == 121) || //屏蔽 F10
    (event.keyCode == 122) || //屏蔽 F11
    (event.keyCode == 123)) //屏蔽 F12
  {
    return false;
  }
}
window.onhelp = function () {
  return false;
}
</script>

网页禁止右键相关行为代码:禁止复制、禁止 F12、禁止ctrl+u、网站禁止右键

防止网站文章被转载的一些常规方法,禁止复制、禁止 F12、禁止ctrl+u、网站禁止右键;但是这些只是做了一层防护,应对普通的新手编辑足够了,如果别人真想复制你网站的内容,还是有其他方法可以进行复制粘贴的。

下面是代码:

?
1
2
3
4
5
6
7
8
9
10
$("body").bind('copy', function (e) {
  var body_element = document.getElementsByTagName('body')[0];
  var selection = window.getSelection();
  var newdiv = document.createElement('div'); newdiv.style.position = 'absolute';
  newdiv.style.left = '-99999px';
  body_element.appendChild(newdiv);
  newdiv.appendChild(selection.getRangeAt(0).cloneContents());
  newdiv.innerHTML = "\u539f\u6587\uff1a<a href='" + document.location.href + "'>" + document.location.href + "</a>\u53d7\u539f\u521b\u534f\u8bae\u4fdd\u62a4\uff0c\u6d4f\u89c8\u5668\u6682\u4e0d\u652f\u6301\u590d\u5236\u7c98\u8d34";
  selection.selectAllChildren(newdiv); window.setTimeout(function () { body_element.removeChild(newdiv) }, 200)
});

上述代码是当选中页面文字,按ctrl+c键进行复制时,会弹出提示框阻止复制操作。

其中,

document.location.href为当前页面url;

\u539f\u6587\uff1a 进行了Unicode编码了的中文字符,转码过来就是“原文:”;

\u53d7\u539f\u521b\u534f\u8bae\u4fdd\u62a4\uff0c\u6d4f\u89c8\u5668\u6682\u4e0d\u652f\u6301\u590d\u5236\u7c98\u8d34 同样的是Unicode编码后的字符串,中文意思为:受原创协议保护,浏览器暂不支持复制粘贴 ;

Unicode编码内容可以借助一些工具进行修改,这里给出站长工具Unicode编码转换链接:http://tool.chinaz.com/tools/unicode.aspx

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//按键触发
document.onkeydown = function(){
  //禁止ctrl+u
  if (event.ctrlKey && window.event.keyCode==85){
  return false;
  }
  //禁止 F12
  if (window.event && window.event.keyCode == 123) {
  event.keyCode = 0;
  event.returnValue = false;
  }
  }
  //网站禁止右键
  document.body.oncontextmenu = function() {
  self.event.returnValue=false
};

上面代码是当按下相关按键或者按下鼠标右键触发的提示。

网页如何禁止鼠标右键和F12,键盘另存为、粘贴、复制事件

最近做的商用后台项目涉及到前端加密技术,为了保证前端页面展示的数据不被窃取,所以在js上做了一些处理,这些处理并不能完全杜绝有心之人窃取数据,只是加大他们操作的难度而已。

1.禁止浏览器右键事件。使用浏览器右键可以将网页保存下来,或者审查网页源代码,这是我们想避免的(当然,仍然可以通过浏览器右上角的工具栏打开开发者工具,这里可以判断下鼠标的光标位置,如果光标移动到导航栏及页面body之外的地方,我们可以选择把页面展示的元素清空,这样在控制台看见的源代码也没有展示出来的数据了)。

js实现:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<!DOCTYPE html>
<html>
<head>
 <meta charset="UTF-8">
 <title>禁止鼠标右键事件</title>
</head>
<body>
<p>这里是一些内容,展示禁止鼠标右键事件
</p>
</body>
<script>
 document.oncontextmenu = function(){
 return false;
 }
</script>
</html>

jquery实现:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<!DOCTYPE html>
<html>
<head>
 <meta charset="UTF-8">
 <title>禁止鼠标右键事件</title>
</head>
<body>
<p>这里是一些内容,展示禁止鼠标右键事件
</p>
</body>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
<script>
 $(function(){
 $(document).contextmenu(function() {
  return false
 })
 });
</script>
</html>

2.禁止F12事件,键盘的选择粘贴复制事件

jquery实现:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<!DOCTYPE html>
<html>
<head>
 <meta charset="UTF-8">
 <title>禁止键盘粘贴复制</title>
</head>
<body>
<p>这里是一些内容
</p>
</body>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
<script>
 function forbidKeyboard() {
 $(document).keydown(function(e) {
  /*9:Tab键, 17:Control键, 18:Alt键, 123:F12键, 83:S键*/
  var keyboardCode = [9, 17, 18, 123];
  for (i in keyboardCode) {
  if (keyboardCode[i] == e.keyCode) {
   return false;
  }
  }
  if ((e.keyCode == 83) && (e.ctrlKey || e.metaKey)) {
  return false;
  }
 });
 /*禁止文本选择功能*/
 $(document).bind("selectstart",function(){return false;});
 }
 $(function(){
 forbidKeyboard();
 });
</script>
</html>

js实现:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<!DOCTYPE html>
<html>
<head>
 <meta charset="UTF-8">
 <title>js禁止f12事件</title>
 <script>
 window.onload = function(){
  document.onkeydown = function(event){
  var ev = event || window.event || arguments.callee.caller.arguments[0];
  //123 代表F12键
  if(event.keyCode = 123){
   return false;
  }
  }
 }
 </script>
</head>
<body>
<p>这里是一些内容</p>
</body>
</html>

js屏蔽chrome F12后页面自动跳转

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
function a() {
 window.location.href = "http://www.zzvips.com/";
 return false
}
 if (top.window.outerHeight - top.window.innerHeight > 150) {
 a()
 }
 if (top.window.outerWidth - top.window.innerWidth > 150) {
 a()
 }
};
r(document).keydown(function() {
 return y(arguments[0])
});
 
function y(r) {
 var o;
 if (window.event) {
 o = r.keyCode
 } else if (r.which) {
 o = r.which
 }
 if (o == 123) {
 e.larryCmsError("说好的demo版本只演示 不允许F12哦!", e.larryCore.tit);
 return false
 }
 if (r.ctrlKey) {
 if (r.shiftKey && o == 73) {
  e.larryCmsError("说好的demo版本只演示 不允许ctrl+shift+I哦!", e.larryCore.tit);
  return false
 }
 }
 if (r.ctrlKey && o == 83) {
 e.larryCmsError("说好的demo版本只演示 不允许ctrl+s保存哦!", e.larryCore.tit);
 return false
 }
}

具体就是页面加载后执行s();判断是不是有调试工具
和按f12后触发window.onresize判断,和按键key判断

到此这篇关于JS禁用右键、禁用Ctrl+u、禁用Ctrl+s、禁用F12的实现代码的文章就介绍到这了,更多相关JS禁用右键Ctrl内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://www.cnblogs.com/romanticcrystal/p/10672357.html

延伸 · 阅读

精彩推荐