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 Object与Function使用
Jan 11 Javascript
使用jQuery插件创建常规模态窗口登陆效果
Aug 23 Javascript
用jquery方法操作radio使其默认选项是否
Sep 10 Javascript
基于编写jQuery的无缝滚动插件
Aug 02 Javascript
jQuery截取指定长度字符串代码
Aug 21 Javascript
javascript中callee与caller的区别分析
Apr 20 Javascript
Angularjs 创建可复用组件实例代码
Oct 09 Javascript
利用Node.js编写跨平台的spawn语句详解
Feb 12 Javascript
vue.js动态数据绑定学习笔记
May 19 Javascript
《javascript少儿编程》location术语总结
May 27 Javascript
vue devtools的安装与使用教程
Aug 08 Javascript
vue鼠标悬停事件实例详解
Apr 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
PHP的FTP学习(三)
2006/10/09 PHP
PHP生成图片验证码、点击切换实例
2014/06/25 PHP
PHP实现对文本数据库的常用操作方法实例演示
2014/07/04 PHP
php通过header发送自定义数据方法
2018/01/18 PHP
PHP实现给定一列字符,生成指定长度的所有可能组合示例
2019/06/22 PHP
javascript编码的几个方法详细介绍
2013/01/06 Javascript
简易js代码实现计算器操作
2013/04/15 Javascript
JS 实现Table相同行的单元格自动合并示例代码
2013/08/27 Javascript
JavaScript实现打字效果的方法
2015/07/10 Javascript
JavaScript实现复制内容到粘贴板代码
2016/03/31 Javascript
基于jQuery的select下拉框选择触发事件实例分析
2016/11/18 Javascript
JS创建Tag标签的方法详解
2017/06/09 Javascript
基于easyui checkbox 的一些操作处理方法
2017/07/10 Javascript
JQuery常见节点操作实例分析
2019/05/15 jQuery
基于js实现数组相邻元素上移下移
2020/05/19 Javascript
记一次vue跨域的解决
2020/10/21 Javascript
[52:14]VG vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
[01:02:07]Liquid vs Newbee 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
python实现判断数组是否包含指定元素的方法
2015/07/15 Python
Python实现控制台中的进度条功能代码
2017/12/22 Python
python基于ID3思想的决策树
2018/01/03 Python
使用Python写一个小游戏
2018/04/02 Python
Python离线安装PIL 模块的方法
2019/01/08 Python
简单了解django orm中介模型
2019/07/30 Python
在django中实现页面倒数几秒后自动跳转的例子
2019/08/16 Python
在Python中字符串、列表、元组、字典之间的相互转换
2019/11/15 Python
Python matplotlib修改默认字体的操作
2020/03/05 Python
澳大利亚网上玩具商店:Mr Toys Toyworld
2018/03/25 全球购物
eBay意大利购物网站:eBay.it
2019/09/04 全球购物
介绍一下HTTP、HTTPS和SSL
2012/12/16 面试题
在网络中有两台主机A和B,并通过路由器和其他交换设备连接起来,已经确认物理连接正确无误,怎么来测试这两台机器是否连通?如果不通,怎么来判断故障点?怎么排
2014/01/13 面试题
党支部书记岗位责任制
2014/02/11 职场文书
出纳员岗位职责
2014/03/13 职场文书
知识竞赛主持词
2014/03/26 职场文书
大学生村官驻村工作心得体会
2016/01/23 职场文书
写给消防战士们的一封慰问信
2019/10/07 职场文书