JavaScript 自定义html元素鼠标右键菜单功能

 更新时间:2019年12月02日 13:50:41   作者:授客  
这篇文章主要介绍了JavaScript 自定义html元素鼠标右键菜单功能,本文通过实例代码给大家分享实现思路,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下

自定义html元素鼠标右键菜单

实现思路

在触发contextmenu事件时,取消默认行为(也就是阻止浏览器显示自带的菜单),获取右键事件对象,来确定鼠标的点击位置,作为显示菜单的left和top值

编码实现

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script>
  window.onload = function(){
  var menu = document.getElementById('menu');
  document.body.oncontextmenu = function(e){ // 自定义body元素的鼠标事件处理函数
    var e = e || window.event;
    e.preventDefault(); //阻止系统右键菜单 IE8-不支持
    // 显示自定义的菜单调整位置
    let scrollTop =
        document.documentElement.scrollTop || document.body.scrollTop;// 获取垂直滚动条位置
    let scrollLeft =
        document.documentElement.scrollLeft || document.body.scrollLeft;// 获取水平滚动条位置
    menu.style.display = 'block';
    menu.style.left = e.clientX + scrollLeft + 'px';
    menu.style.top = e.clientY + scrollTop + 'px';
  }
  // 鼠标点击其他位置时隐藏菜单
  document.onclick = function(){
    menu.style.display = 'none';
  }
}
</script>
<style>
  *{
    margin: 0;
    padding: 0;
  }
  p{
    margin-top: 200px; 
  }
  ul li{
    list-style-type: none;
    margin: 10px 0;
    text-align: center;
  }
  #menu{
    border:1px solid #ccc;
    background: #eee;
  position: absolute; // 设置菜单为绝对位置
    width: 100px;
    height: 120px;
    display: none;
  }
</style>
</head>
<body style="overflow:auto">
  <div id="box" style="height:5000px; width:5000px">让body元素出现滚动条用的div</div>
  <div id="menu">
    <ul>
      <li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" >分享</a></li>
      <li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" >收藏</a></li>
      <li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" >举报</a></li>
    </ul>
  </div>
</body>
</html>

实现效果

总结

以上所述是小编给大家介绍的JavaScript 自定义html元素鼠标右键菜单功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

相关文章

  • js操纵跨frame的三级联动select下拉选项实例介绍

    js操纵跨frame的三级联动select下拉选项实例介绍

    运用HTML、CSS以及Javascript相关知识,编写多窗口多菜单的内容联动,具体思路及代码如下,感兴趣的朋友可以参考下哈,希望大家有所帮助
    2013-05-05
  • Js通过AES加密后PHP用Openssl解密的方法

    Js通过AES加密后PHP用Openssl解密的方法

    这篇文章主要给大家介绍了关于Js如何通过AES加密后PHP利用Openssl解密的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-07-07
  • js获取新浪天气接口的实现代码

    js获取新浪天气接口的实现代码

    下面小编就为大家带来一篇js获取新浪天气接口的实现代码。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • ES6学习笔记之Set和Map数据结构详解

    ES6学习笔记之Set和Map数据结构详解

    这篇文章主要介绍了ES6学习笔记之Set和Map数据结构,结合实例形式详细分析了ECMAScript中基本数据结构Set和Map的常用属性与方法的功能、用法及相关注意事项,需要的朋友可以参考下
    2017-04-04
  • Javascript中判断对象是否为空

    Javascript中判断对象是否为空

    这篇文章主要介绍了Javascript中判断对象是否为空,本文利用Javascript 中的对象就是一个字典的特性,检查对象中有没有键值对实现判断对象是否为空,需要的朋友可以参考下
    2015-06-06
  • Flexible.js可伸缩布局实现方法详解

    Flexible.js可伸缩布局实现方法详解

    这篇文章主要介绍了Flexible.js可伸缩布局实现方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • javascript 读取xml,写入xml 实现代码

    javascript 读取xml,写入xml 实现代码

    javascript xml读取,写入xml 实现代码
    2009-07-07
  • JS OffsetParent属性深入解析

    JS OffsetParent属性深入解析

    本篇文章要是对JS中的OffsetParent属性进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所 帮助
    2014-01-01
  • js 动态添加标签(新增一行,其实很简单,就是几个函数的应用)

    js 动态添加标签(新增一行,其实很简单,就是几个函数的应用)

    把所有代码拷下另存为一个html文件,在浏览器中打开,点击“新增一行”按钮就可以,以下是对js函数的解释
    2009-03-03
  • 一个简易时钟效果js实现代码

    一个简易时钟效果js实现代码

    这篇文章主要为大家详细介绍了一个简易时钟效果js实现代码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10

最新评论