您现在的位置是:网站首页 > 代码编程 > WEB前端WEB前端

【原】JS禁止页面右键菜单,并且自定义鼠标右键菜单

不忘初心 不忘初心 2019-06-20 围观() 评论() 点赞() WEB前端

简介:JS如何禁止页面右键菜单?如何JS实现自定义右键菜单?在一些场景下,我们并不希望用户点击右键菜单来审查元素,或者说我们想在右键菜单中添加一些我们自己的功能,但是却没有直接的API,那我们就换一种思路,直接禁止浏览器的原生右键鼠标菜单,然后自己重新写一个右键弹出菜单。

在一些场景下,我们并不希望用户点击右键菜单来审查元素,或者说我们想在右键菜单中添加一些我们自己的功能,但是却没有直接的API,那我们就换一种思路,直接禁止浏览器的原生右键鼠标菜单,然后自己重新写一个右键弹出菜单。

如下图所示:

JS禁止页面右键菜单,并且自定义鼠标右键菜单

实现代码:

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>JS禁止页面右键菜单,并且自定义鼠标右键菜单</title>
    <style type="text/css">
        #item-list {
            width: 0; /*设置为0 隐藏自定义菜单*/
            height: 125px;
            overflow: hidden; /*隐藏溢出的元素*/
            box-shadow: 0 1px 1px #888, 1px 0 1px #ccc;
            position: absolute; /*自定义菜单相对与body元素进行定位*/
        }

        .item {
            width: 130px;
            height: 25px;
            line-height: 25px;
            padding: 0 10px;
        }
    </style>
</head>
<body>
<!--自定义右键菜单html代码-->
<div id="item-list">
    <div class="item">功能1</div>
    <div class="item">功能2</div>
    <div class="item">功能3</div>
    <div class="item">功能4</div>
    <div class="item">功能5</div>
</div>
<script type="text/javascript">
    // 根据鼠标点击,计算右键菜单展示的坐标
    window.oncontextmenu = function (e) {
        //取消默认的浏览器自带右键 很重要!!
        e.preventDefault();

        //获取我们自定义的右键菜单
        var menu = document.querySelector("#item-list");

        //根据事件对象中鼠标点击的位置,进行定位
        menu.style.left = e.clientX + 'px';
        menu.style.top = e.clientY + 'px';

        //改变自定义菜单的宽,让它显示出来
        menu.style.width = '125px';
    }

    //关闭右键菜单,很简单
    window.onclick = function () {
        //用户触发click事件就可以关闭了,因为绑定在window上,按事件冒泡处理,不会影响菜单的功能
        document.querySelector('#item-list').style.height = 0;
    }
</script>
</body>
</html>

代码很简单,核心思路就两点:

1、通过鼠标点击的坐标,动态计算右键菜单的位置;

2、点击右键菜单之外的地方,关闭右键菜单;

js

看完文章,有任何疑问,请加入群聊一起交流!!!

很赞哦! ()

文章评论

  • 请先说点什么
    人参与,条评论

请使用电脑浏览器访问本页面,使用手机浏览器访问本页面会导致下载文件异常!!!

雨落无影

关注上方公众号,回复关键字【下载】获取下载码

用完即删,每次下载需重新获取下载码

若出现下载不了的情况,请及时联系站长进行解决

站点信息

  • 网站程序:spring + freemarker
  • 主题模板:《今夕何夕》
  • 文章统计:篇文章
  • 标签管理标签云
  • 微信公众号:扫描二维码,关注我们