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 获取url参数和script标签中获取url参数函数代码
Jan 22 Javascript
jQuery fadeTo方法调整图片的透明度使用介绍
May 06 Javascript
JQuery-tableDnD 拖拽的基本使用介绍
Jul 04 Javascript
jQuery函数map()和each()介绍及异同点分析
Nov 08 Javascript
轻量级javascript 框架Backbone使用指南
Jul 24 Javascript
JavaScript实现带箭头标识的多级下拉菜单效果
Aug 27 Javascript
javascript简单进制转换实现方法
Nov 24 Javascript
JS触摸与手势事件详解
May 09 Javascript
vue3.0 CLI - 2.2 - 组件 home.vue 的初步改造
Sep 14 Javascript
小程序websocket心跳库(websocket-heartbeat-miniprogram)
Feb 23 Javascript
javascript设计模式 ? 中介者模式原理与用法实例分析
Apr 20 Javascript
vue-cli 关闭热更新操作
Sep 18 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编程实现获取excel文档内容的代码实例
2011/06/28 PHP
thinkphp中空模板与空模块的用法实例
2014/11/26 PHP
php从给定url获取文件扩展名的方法
2015/03/14 PHP
tp5 实现列表数据根据状态排序
2019/10/18 PHP
JavaScript触发器详解
2007/03/10 Javascript
Highslide.js是一款基于js实现的网页中图片展示插件
2020/03/30 Javascript
javascript js cookie的存储,获取和删除
2007/12/29 Javascript
JS支持带x身份证号码验证函数
2008/08/10 Javascript
ExtJS 2.0实用简明教程 之Border区域布局
2009/04/29 Javascript
jQuery 1.5最新版本的改进细节分析
2011/01/19 Javascript
jquery 插件学习(二)
2012/08/06 Javascript
JS保留两位小数,多位小数的示例代码
2014/01/07 Javascript
Prototype框架详解
2015/11/25 Javascript
jQuery实现按比例缩放图片的方法
2017/04/29 jQuery
详解vue-cli本地环境API代理设置和解决跨域
2017/09/05 Javascript
vue devtools的安装与使用教程
2018/08/08 Javascript
mpvue小程序循环动画开启暂停的实现方法
2019/05/15 Javascript
Vue 技巧之控制父类的 slot
2020/02/24 Javascript
Python的Flask框架中@app.route的用法教程
2015/03/31 Python
Python使用plotly绘制数据图表的方法
2017/07/18 Python
python中数据爬虫requests库使用方法详解
2018/02/11 Python
css3中单位px,em,rem,vh,vw,vmin,vmax的区别及浏览器支持情况
2016/12/06 HTML / CSS
澳大利亚排名第一的狂热牛仔品牌:ONETEASPOON
2018/11/20 全球购物
草莓网官网:StrawberryNET
2019/08/21 全球购物
俄罗斯品牌服装和鞋子的在线商店:KUPIVIP
2019/10/27 全球购物
俄罗斯第一家多品牌在线奢侈品精品店:Aizel.ru
2020/09/06 全球购物
什么是GWT的Module
2013/01/20 面试题
模具毕业生推荐信
2014/02/15 职场文书
治安消防安全责任书
2014/07/23 职场文书
环境保护建议书
2014/08/26 职场文书
写给女朋友的保证书
2015/05/09 职场文书
故意杀人案辩护词
2015/05/21 职场文书
python实现剪贴板的操作
2021/07/01 Python
Mysql 文件配置解析介绍
2022/05/06 MySQL
mysql sql常用语句大全
2022/06/21 MySQL
vue3 自定义图片放大器效果的示例代码
2022/07/23 Vue.js