JavaScript 禁用页面复制与右键菜单完整方案

作者:白帽猫

时间:2026-10-27

浏览:108

本文介绍了使用 JavaScript 禁用网页复制功能和右键菜单的多种方法。通过设置 document.body 的 onselectstart、oncontextmenu、oncopy 等事件处理程序,可有效防止用户通过右键、快捷键或拖拽复制内容。文章提供了完整的代码示例及注意事项,包括代码放置位置和浏览器兼容性处理。

文章目录

禁用右键菜单与复制功能概述

在 HTML 的 body 标签中添加 oncontextmenu="return false" 属性,可以禁用网页的右键菜单,但用户仍可通过快捷键进行复制操作。


JavaScript 禁用复制代码实现

以下是通过 JavaScript 代码禁用复制功能的方法:


具体代码如下:

 
<script type="text/javascript">
document.body.onselectstart=document.body.oncontextmenu=function(){ return false;}
</script>

需要注意的是,这段代码必须放置在 body 元素之后。如果将其放在 head 标签内或 body 之前,代码将无法生效。


补充说明:document.body.onselectstart 用于控制页面内容的选中功能。


document.body.oncontextmenu 用于控制页面右键菜单的显示。


document.body.ondragstart 用于控制页面内容的拖拽功能,拖拽操作有时也可实现复制效果,因此在禁止复制时需一并禁用。


document.body.oncopy 用于控制页面内容的复制功能。当禁用此功能后,即使点击复制或使用了快捷键,剪切板中的内容也不会更新为刚复制的内容,而是保持之前的内容或为空。


document.body.oncut 用于控制页面内容的剪切功能,其禁用效果与禁用复制功能类似。


注意:如果应用了上述禁用功能后,页面某些角落仍允许右键或复制,可能是因为 body 元素未覆盖整个页面。此时可以在 body 标签中添加以下属性:


leftMargin=0 topMargin=0 style="width: 100%;height: 100%;"


通过 Body 属性全面禁用复制

通过设置 body 属性来全面禁用复制功能的代码如下:


具体代码如下:

 
<body oncontextmenu="return false" onselectstart="return false"
ondragstart="return false" oncopy="return false"
oncut="return false;
leftMargin=0
topMargin=0 style="width: 100%;height: 100%;" >
以下代码旨在禁用网页另存为功能,但经测试并未成功。如有知晓原因者,欢迎在评论区留言说明,谢谢。
<noscript>
<iframe scr="*.htm"></iframe>
</noscript>
</body>

屏蔽右键与快捷键的完整案例

以下是另一个 JavaScript 代码案例:


具体代码如下:

 
//******************** 屏蔽右键 ***********************
function click(e) {
if (document.all) {
if (event.button==1||event.button==2||event.button==3) {
oncontextmenu='return false';
} 
} 
if (document.layers) {
if (e.which == 3) {
oncontextmenu='return false';
} 
} 
} 
if (document.layers) {
document.captureEvents(Event.MOUSEDOWN);
} 
document.onmousedown=click;
document.oncontextmenu = new Function("return false;")
//******************************************* 
document.onkeydown=function(evt){
if(document.selection.createRange().parentElement().type == "file"){
return false;
} 
if ((event.keyCode==116)|| //屏蔽 F5 刷新键
(event.ctrlKey && event.keyCode==82)){ //Ctrl + R
event.keyCode=0;
event.returnValue=false;
} 
if ((window.event.altKey)&&(window.event.keyCode==115)){ //屏蔽Alt+F4
return false;
} 
} 

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章