Javascript实现鼠标右键特色菜单


Posted in Javascript onAugust 04, 2015

在Web端,通常是不需要右键菜单,各个浏览器也有自己的右键菜单。但是对于一些特殊的网页,是需要右键菜单来增加用户体验的,比如百度音乐,QQ邮箱,相信大家都在Web端使用过右键菜单了,现在来分享一下如何实现,比较简单。

运行代码:

window.onload = function() {
      document.oncontextmenu = block;
      document.body.onmouseup = function(event) {
        if (!event) event = window.event;
        if (event.button == 2) {
          var x = event.pageX || event.clientX;
          var y = event.pageY || event.clientY;
          document.getElementById("contextMenu").style.left = x  "px";
          document.getElementById("contextMenu").style.top = y  "px";
          document.getElementById("contextMenu").style.display = "block";
        }
      }
      //阻止事件冒泡
      document.getElementById("contextMenu").onclick = function(event) {
        event.stopPropagation();
      }
      //点击其他地方隐藏
      document.onclick = function() {
        document.getElementById("contextMenu").style.display = "none";
      }
      for (var i = 0; i < getElementsByClassName("contextMenuItem").length; i ) {
 
        getElementsByClassName("contextMenuItem")[i].onclick = function(event) {
          event = event ? event : window.event
          var target = event.srcElement ? event.srcElement : event.targe;
          document.getElementById("contextMenu").style.display = "none";
          //alert("您点击了: "  target.innerHTML);
           
        }
      }
 
    }
     
    function block(event) {
      if (window.event) {
        event = window.event;
        event.returnValue = false;
      } else event.preventDefault();
    }
    //兼容IE不支持getElementsByClassName
    function getElementsByClassName(className, root, tagName) {
      if (root) {
        root = typeof root == "string" ? document.getElementById(root) : root;
      } else {
        root = document.body;
      }
      tagName = tagName || "*";
      if (document.getElementsByClassName) { 
        return root.getElementsByClassName(className);
      } else {
        var tag = root.getElementsByTagName(tagName); 
        var tagAll = [];
        for (var i = 0; i < tag.length; i ) {
          for (var j = 0, n = tag[i].className.split(' '); j < n.length; j ) {
            if (n[j] == className) {
              tagAll.push(tag[i]);
              break;
            }
          }
        }
        return tagAll;
      }
    }

效果图:

Javascript实现鼠标右键特色菜单

以上就是本文的全部内容,希望大家可以喜欢。

Javascript 相关文章推荐
jQuery学习笔记之jQuery的事件
Dec 22 Javascript
元素未显示设置width/height时IE中使用currentStyle获取为auto
May 04 Javascript
Jquery搜索父元素操作方法
Feb 10 Javascript
简介JavaScript中POSITIVE_INFINITY值的使用
Jun 05 Javascript
基于jQuery实现交互体验社会化分享代码附源码下载
Jan 04 Javascript
JavaScript中的ajax功能的概念和示例详解
Oct 17 Javascript
基于node.js的fs核心模块读写文件操作(实例讲解)
Sep 10 Javascript
浅谈React前后端同构防止重复渲染
Jan 05 Javascript
Koa代理Http请求的示例代码
Oct 10 Javascript
WebGL学习教程之Three.js学习笔记(第一篇)
Apr 25 Javascript
微信小程序实现获取用户信息并存入数据库操作示例
May 07 Javascript
JS绘图Flot如何实现可选显示曲线图功能
Oct 16 Javascript
JS脚本根据手机浏览器类型跳转WAP手机网站(两种方式)
Aug 04 #Javascript
常用的Javascript数据验证插件
Aug 04 #Javascript
网页收藏夹显示ICO图标(代码少)
Aug 04 #Javascript
实现音乐播放器的代码(html5+css3+jquery)
Aug 04 #Javascript
基于ajax实现文件上传并显示进度条
Aug 03 #Javascript
函数window.open实现关闭所有的子窗口
Aug 03 #Javascript
百度地图api如何使用
Aug 03 #Javascript
You might like
Linux下PHP安装mcrypt扩展模块笔记
2014/09/10 PHP
php中的抽象方法和抽象类
2017/02/14 PHP
Nginx+php配置文件及原理解析
2020/12/09 PHP
js表格分页实现代码
2009/09/18 Javascript
JavaScript中也使用$美元符号来代替document.getElementById
2010/06/19 Javascript
JS字符串的切分用法实例
2016/02/22 Javascript
浅析JS操作DOM的一些常用方法
2016/05/13 Javascript
JS集成fckeditor及判断内容是否为空的方法
2016/05/27 Javascript
Vue.js每天必学之方法与事件处理器
2016/09/06 Javascript
浅谈js对象的创建和对6种继承模式的理解和遐想
2016/10/16 Javascript
详解微信小程序——自定义圆形进度条
2016/12/29 Javascript
jqgrid实现简单的单行编辑功能
2017/09/30 Javascript
element-ui 表格数据时间格式化的方法
2018/08/24 Javascript
JS+HTML5 canvas绘制验证码示例
2018/12/05 Javascript
jQuery操作元素追加内容示例
2020/01/10 jQuery
VUE实现Studio管理后台之鼠标拖放改变窗口大小
2020/03/04 Javascript
python线程池的实现实例
2013/11/18 Python
Python 抓取动态网页内容方案详解
2014/12/25 Python
Python读取ini文件、操作mysql、发送邮件实例
2015/01/01 Python
分享python数据统计的一些小技巧
2016/07/21 Python
Django自定义分页效果
2017/06/27 Python
python合并同类型excel表格的方法
2018/04/01 Python
selenium+python环境配置教程详解
2019/05/28 Python
Pandas DataFrame数据的更改、插入新增的列和行的方法
2019/06/25 Python
Python序列类型的打包和解包实例
2019/12/21 Python
Python 读取WAV音频文件 画频谱的实例
2020/03/14 Python
python给视频添加背景音乐并改变音量的具体方法
2020/07/19 Python
python如何遍历指定路径下所有文件(按按照时间区间检索)
2020/09/14 Python
Python 按比例获取样本数据或执行任务的实现代码
2020/12/03 Python
德国高端单身人士交友网站:ElitePartner
2018/12/02 全球购物
新东网科技Java笔试题
2012/07/13 面试题
介绍一下OSI七层模型
2012/07/03 面试题
同居协议书范本
2014/04/23 职场文书
真诚的求职信
2014/07/04 职场文书
Django Paginator分页器的使用示例
2021/06/23 Python
浅谈Python中对象是如何被调用的
2022/04/06 Python