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 相关文章推荐
javascript 贪吃蛇实现代码
Nov 22 Javascript
js当一个变量为函数时 应该注意的一点细节小结
Dec 29 Javascript
js如何获取object类型里的键值
Feb 18 Javascript
弹出窗口并且此窗口带有半透明的遮罩层效果
Mar 13 Javascript
js控制href内容的连接内容的变化示例
Apr 30 Javascript
Javascript与jQuery方法的隐藏与显示
Jan 19 Javascript
同步文本框内容JS代码实现
Aug 04 Javascript
关于List.ToArray()方法的效率测试
Sep 30 Javascript
Node.js使用NodeMailer发送邮件实例代码
Mar 06 Javascript
JS实现数组删除指定元素功能示例
Jun 05 Javascript
vuex存储token示例
Nov 11 Javascript
vscode中的vue项目报错Property ‘xxx‘ does not exist on type ‘CombinedVueInstance<{ readyOnly...Vetur(2339)
Sep 11 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
php第一次无法获取cookie问题处理
2014/12/15 PHP
PHP date函数常用时间处理方法
2015/05/11 PHP
PHP识别二维码的方法(php-zbarcode安装与使用)
2016/07/07 PHP
input、button的不同type值在ajax提交表单时导致的陷阱
2009/02/24 Javascript
JS OOP包机制,类创建的方法定义
2009/11/02 Javascript
javascript中的关于类型转换的性能优化
2010/12/14 Javascript
深入理解JavaScript系列(12) 变量对象(Variable Object)
2012/01/16 Javascript
基于JavaScript 数据类型之Boolean类型分析介绍
2013/04/19 Javascript
NodeJS中Buffer模块详解
2015/01/07 NodeJs
jQuery实现跨域
2015/02/03 Javascript
JavaScript生成SQL查询表单的方法
2015/08/13 Javascript
JavaScript iframe数据共享接口实现方法
2016/01/06 Javascript
Javascript点击其他任意地方隐藏关闭DIV实例
2016/06/21 Javascript
jQuery实现的简单百分比进度条效果示例
2016/08/01 Javascript
利用Angularjs和bootstrap实现购物车功能
2016/08/31 Javascript
javascript构造函数以及原型对象的理解
2017/01/13 Javascript
Node.js npm命令运行node.js脚本的方法
2018/10/10 Javascript
小程序和web画三角形实现解析
2019/09/02 Javascript
js实现简单掷骰子效果
2019/10/24 Javascript
[01:02]DOTA2上海特锦赛SHOWOPEN
2016/03/25 DOTA
python中使用pyhook实现键盘监控的例子
2014/07/18 Python
Python中encode()方法的使用简介
2015/05/18 Python
python 写入csv乱码问题解决方法
2016/10/23 Python
关于python的list相关知识(推荐)
2017/08/30 Python
Python反射用法实例简析
2017/12/22 Python
Python统计python文件中代码,注释及空白对应的行数示例【测试可用】
2018/07/25 Python
matplotlib实现区域颜色填充
2019/03/18 Python
python仿抖音表白神器
2019/04/08 Python
Python Selenium参数配置方法解析
2020/01/19 Python
pytorch使用tensorboardX进行loss可视化实例
2020/02/24 Python
会计电算化学生个人的自我评价
2014/02/08 职场文书
2015年毕业生自我鉴定模板
2014/09/19 职场文书
医生个人自我剖析材料
2014/10/08 职场文书
2015年入党决心书
2015/02/05 职场文书
金砖之国观后感
2015/06/11 职场文书
《宝可梦》动画制作25周年到来 官方发布特别纪念视频
2022/04/01 日漫