如何使用 JavaScript/jQuery 禁用右键单击
要禁用页面上的右键单击,我们需要在事件处理程序中添加 oncontextmenu 事件和“返回 false”。
它将阻止通过鼠标右键单击对上下文菜单的所有访问。
例子
<!DOCTYPE html>
<html>
<head>
<title>文档的标题</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.0/jquery.min.js"></script>
</head>
<body>
<h2>Copy and cut disabled</h2>
<p>I am a text and you cannot copy or cut me.</p>
<script>
$(document).ready(function() {
$('body').bind('cut copy', function(e) {
e.preventDefault();
});
});
</script>
</body>
</html>
使用 jQuery 函数 bind() 禁用右键单击功能。
此方法禁用文本字段上的右键单击(上下文菜单)功能,并通过弹出消息提醒用户。
例子
<!DOCTYPE html>
<html>
<head>
<title>文档的标题</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.0/jquery.min.js"></script>
</head>
<body>
<h2>Right-click disabled</h2>
<p>For this page the right-click is disabled.</p>
<script>
$(document).ready(function() {
$("body").on("contextmenu", function(e) {
return false;
});
});
</script>
</body>
</html>
请记住,不可能以任何方式阻止文档中的文本提取(100% 安全),因为有多种方法可以检索内容,即浏览器开发人员控制台。
如何使用 JavaScript 禁用文本选择
将 onmousedown 和 onselectstart 事件应用于 <body> 或者 <div> 标签,以防止在上进行文本选择和复制/剪切。
它覆盖浏览器的默认行为。
例子
<!DOCTYPE html>
<html>
<head>
<title>文档的标题</title>
</head>
<body onmousedown="return false" onselectstart="return false">
<h2>Unselectable text</h2>
<p>经历过风雨,才懂得阳光的温暖。 生活本就是矛盾的,白天与黑夜间的距离,春夏秋冬之间的轮回,于是有了挑剔的喜爱,让无奈加上了喜悦的等待。
是谁把光阴剪成了烟花,一瞬间,看尽繁华。是谁把思念翻起了浪花,一转身,浪迹天涯。
</p>
</body>
</html>
如何使用 JavaScript/jQuery 禁用复制、剪切和粘贴。
我们可以允许文本选择,但使用 oncopy、oncut 和 onpaste 事件属性阻止复制和剪切功能。
通过将这些属性添加到文本框的 <input> 标签中,我们可以禁用剪切、复制和粘贴功能。
用户可以选择手动输入设置了这些属性的字段。
例子
<!DOCTYPE html>
<html>
<head>
<title>文档的标题</title>
</head>
<body>
<h2>Copy, cut and paste disabled</h2>
<input type="text" onselectstart="return false" onpaste="return false;" onCopy="return false" onCut="return false" onDrag="return false" onDrop="return false" autocomplete=off/>
<br>
</body>
</html>
通过使用 jQuery bind() 函数指定用户剪切或者复制文本时触发的剪切和复制事件,可以实现相同的效果。
例子
<!DOCTYPE html>
<html>
<head>
<title>文档的标题</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.0/jquery.min.js"></script>
</head>
<body>
<h2>Copy and cut disabled</h2>
<p>I am a text and you cannot copy or cut me.</p>
<script>
$(document).ready(function() {
$('body').bind('cut copy', function(e) {
e.preventDefault();
});
});
</script>
</body>
</html>
如何使用 CSS 禁用文本选择突出显示
使文本不可选择并不是一项艰巨的任务。
我们需要做的就是禁用可能加载网页的所有浏览器的文本选择性。
让我们看看不同浏览器使用哪些扩展来禁用文本的选择性。
- Chrome、Opera(旧版本)、IOS Safari:-webkit-user-select
- Safari:-webkit-touch-callout
- Mozilla:-moz-user-select
- KHTML 浏览器 (Konqueror):-khtml-user-select
Chrome 从 54.0 版本开始,Opera 从 41.0 版本开始支持 user-select 不带 -webkit- 前缀。
例子
<!DOCTYPE html>
<html>
<head>
<title>文档的标题</title>
<style>
.unselectable {
-webkit-user-select: none;
-webkit-touch-callout: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
color: #cc0000;
}
</style>
</head>
<body>
<p>可以选择的文本</p>
<div class="unselectable">无法选择的文本</div>
</body>
</html>
如果我们需要禁用整个页面的文本选择,请将用户选择应用于 <body> 元素。
在某些情况下,阻止选择网页的某些部分可能是有利可图的。
因为禁用用户选择非常烦人,所以最好不要为整个设置它。
相反,请禁用我们担心可能被盗的部分或者特定文章的文本选择。
在可以增强用户体验的情况下使用它。
无论在上禁用用户选择的原因是什么,如果我们已经到了那一步,那么这里就是学习如何使用 CSS、Javascript 和 jQuery 轻松实现这一点的正确地方。
