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 相关文章推荐
Prototype使用指南之ajax
Jan 10 Javascript
tbody元素支持嵌套的注意方法
Mar 24 Javascript
jQuery获取多种input值的简单实现方法
Jun 20 Javascript
jQuery实现的小图列表,大图展示效果幻灯片示例
Oct 25 Javascript
bootstrap-datetimepicker实现只显示到日期的方法
Nov 25 Javascript
vue2滚动条加载更多数据实现代码
Jan 10 Javascript
js选项卡的制作方法
Jan 23 Javascript
JS实现的自动打字效果示例
Mar 10 Javascript
node.js通过axios实现网络请求的方法
Mar 05 Javascript
JS中的算法与数据结构之二叉查找树(Binary Sort Tree)实例详解
Aug 16 Javascript
JavaScript Window浏览器对象模型原理解析
May 30 Javascript
Vuex中的Mutations的具体使用方法
Jun 01 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
《逃离塔科夫》——“萌新劝退,老手自嗨”的硬核FPS游戏
2020/04/03 其他游戏
便携利器 — TECSUN PL-365简评
2021/03/02 无线电
php共享内存段示例分享
2014/01/20 PHP
php中多维数组按指定value排序的实现代码
2014/08/19 PHP
php计算指定目录下文件占用空间的方法
2015/03/13 PHP
PHP操作Redis数据库常用方法示例
2018/08/25 PHP
PHP7实现和CryptoJS的AES加密方式互通示例【AES-128-ECB加密】
2019/06/08 PHP
动态创建的表格单元格中的事件实现代码
2008/12/30 Javascript
JavaScript实现维吉尼亚(Vigenere)密码算法实例
2013/11/22 Javascript
对于Form表单reset方法的新认识
2014/03/05 Javascript
js添加select下默认的option的value和text的方法
2014/10/19 Javascript
javascript使用call调用微信API
2014/12/15 Javascript
z-blog SyntaxHighlighter 长代码无法换行解决办法(基于jquery)
2015/11/18 Javascript
【经典源码收藏】基于jQuery的项目常见函数封装集合
2016/06/07 Javascript
搭建Bootstrap离线文档的方法
2016/12/02 Javascript
AngularJS实现的简单拖拽功能示例
2018/01/02 Javascript
nodejs+mongodb aggregate级联查询操作示例
2018/03/17 NodeJs
微信小程序发送短信验证码完整实例
2019/01/07 Javascript
基于JS实现前端压缩上传图片的实例代码
2019/05/14 Javascript
javascript中的offsetWidth、clientWidth、innerWidth及相关属性方法
2020/05/14 Javascript
深入了解和应用Python 装饰器 @decorator
2019/04/02 Python
python使用正则表达式去除中文文本多余空格,保留英文之间空格方法详解
2020/02/11 Python
查看keras的默认backend实现方式
2020/06/19 Python
Python和Bash结合在一起的方法
2020/11/13 Python
python读取excel数据并且画图的实现示例
2021/02/08 Python
Bose美国官网:购买Bose耳机和音箱
2019/03/10 全球购物
AP澳洲中文网:澳洲正品直邮,包税收件无忧
2019/07/12 全球购物
Antler英国官网:购买安特丽行李箱、拉杆箱
2019/08/25 全球购物
澳大利亚领先的女性运动服品牌:Lorna Jane
2020/06/19 全球购物
开办加工厂创业计划书
2014/01/03 职场文书
大学生学习自我评价
2014/01/13 职场文书
乡镇党的群众路线教育实践活动剖析材料
2014/10/09 职场文书
2014年作风建设剖析材料
2014/10/23 职场文书
党的群众路线教育实践活动个人整改方案
2014/10/25 职场文书
单位领导婚礼致辞
2015/07/28 职场文书
2019最新版股权转让及委托持股协议书范本
2019/08/07 职场文书