js方法禁止查看源文件、防止复制、禁止F12、禁止右键、禁止选中、禁止另存、禁止缓存

本文介绍了如何通过JavaScript代码在前端开发中屏蔽F12审查元素、鼠标右键功能以及复制、粘贴、剪切等操作,同时检测开发者工具的使用并拒绝另存和禁止页面缓存,提升代码安全性和用户体验。

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

目录

1.屏蔽F12审查元素

2.禁用鼠标右键

3.屏蔽粘贴

4.屏蔽复制

5.屏蔽剪切

6.屏蔽选中

7.检测开发者工具 

8.拒绝另存

9.禁止缓存 


前端开发中,F12审查元素的情况下,大家都可以随机更改一部分页面的代码,注入恶意JS等等,这种情况避免也不难,虽然还能看到一部分H5源码,但是无法修改。

1.屏蔽F12审查元素


<script>
    document.onkeydown = function () {
        if (window.event && window.event.keyCode == 123) {
            alert("F12被禁用");
            event.keyCode = 0;
            event.returnValue = false;
        }
        if (window.event && window.event.keyCode == 13) {
            window.event.keyCode = 505;
        }
        if (window.event && window.event.keyCode == 8) {
            alert(str + "\n请使用Del键进行字符的删除操作!");
            window.event.returnValue = false;
        }
    }
</script>

2.禁用鼠标右键

<script>
    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;
        }
    }
</script>

有同学反映:火狐浏览器中按钮给了disabled,禁止右键就失效了?这个怎么修复呢?

 给按钮增加样式 pointer-events: none;属性即可修复

button[disabled] {
  pointer-events: none;
}

3.屏蔽粘贴

<script>
    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;
        }
    }
</script>

4.屏蔽复制

<script>
    document.oncopy = 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;
        }
    }
</script>

5.屏蔽剪切


<script>
    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;
        }
    }
</script>

6.屏蔽选中


<script>
    document.onselectstart = 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;
        }
    }
</script>

7.检测开发者工具 

 开发者工具可以帮助开发者快速调试代码,但也可以用于查看源代码。可以在页面上监听控制台输出事件,当有控制台事件输出时即说明开发者工具被打开,进而禁止访问页面。

下面是一个监听控制台事件输出的示例:

function detectDevTools() {
    let threshold = 160;
    let lastTime = new Date().getTime();
    setInterval(function() {
        let currentTime = new Date().getTime();
        if (currentTime - lastTime > threshold) {
            window.location.href = "https://code-nav.top";
        }
        lastTime = currentTime;
    }, threshold);
}

detectDevTools();

当监测到控制台输出事件时,会自动跳转到指定页面。

8.拒绝另存

<!--在<body></body>之间加入代码 -->
<noscript><iframe src="/*>";</iframe></noscript>

9.禁止缓存 

在页面中使用如下HTML标记:

 
<HEAD>
    <META http-equiv=Pragma content=no-cache>
    <META http-equiv=Cache-Control content=no-cache>
    <META http-equiv=Expires content=0>
</HEAD>

欢迎在评论区交流。

如果文章对你有所帮助,❤️关注+点赞❤️鼓励一下博主会持续更新。。。。

我的博客原文:前端js禁止鼠标右键及F12禁止查看源代码

往期回顾

 css实现元素居中的6种方法 

Angular8升级至Angular13遇到的问题

前端vscode必备插件(强烈推荐)

Webpack性能优化

vite构建如何兼容低版本浏览器

前端性能优化9大策略(面试一网打尽)!

vue3.x使用prerender-spa-plugin预渲染达到SEO优化

 vite构建打包性能优化

 vue3.x使用prerender-spa-plugin预渲染达到SEO优化

 ES6实用的技巧和方法有哪些?

 css超出部分显示省略号

vue3使用i18n 实现国际化

vue3中使用prismjs或者highlight.js实现代码高亮

什么是 XSS 攻击?什么是 CSRF?什么是点击劫持?如何防御

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

富朝阳

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

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

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

打赏作者

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

抵扣说明:

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

余额充值