Javascript实现鼠标右键特色菜单

 更新时间:2015年08月04日 09:53:35   投稿:lijiao  
鼠标右键大家都经常操作,但是鼠标的内容是不是符合大家的“口味”?这篇文章就是教大家如何定制自己专属鼠标右键,需要的朋友可以参考下

在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;
      }
    }

效果图:

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

相关文章

  • JS绘图Flot应用图形绘制异常解决方案

    JS绘图Flot应用图形绘制异常解决方案

    这篇文章主要介绍了JS绘图Flot应用图形绘制异常解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • js相册效果代码(点击创建即可)

    js相册效果代码(点击创建即可)

    利用js 书写的相册代码,点击创建即可看到效果,感兴趣的朋友可以参考下哈,希望对你学习jquery有所帮助
    2013-04-04
  • js事件on动态绑定数据,绑定多个事件的方法

    js事件on动态绑定数据,绑定多个事件的方法

    今天小编就为大家分享一篇js事件on动态绑定数据,绑定多个事件的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-09-09
  • 如何用JavaScript动态呼叫函数(两种方式)

    如何用JavaScript动态呼叫函数(两种方式)

    下面介绍一下动态呼叫函数目前应该有下面两种方式,它们之间的使用及对比,感兴趣的朋友可以研究下,希望可以帮助到你
    2013-05-05
  • JavaScript函数式编程实现介绍

    JavaScript函数式编程实现介绍

    函数式编程是一种编程范式,将整个程序都由函数调用以及函数组合构成。 可以看成一条流水线,数据可以不断地从一个函数的输出流入另一个函数的输入,最后输出结果
    2022-09-09
  • js中的DOM模拟购物车功能

    js中的DOM模拟购物车功能

    本篇文章主要介绍了js中的DOM模拟购物车功能的示例代码。具有很好的参考价值。下面跟着小编一起来看下吧
    2017-03-03
  • JS简单表单验证功能完整示例

    JS简单表单验证功能完整示例

    这篇文章主要介绍了JS简单表单验证功能,结合完整实例形式分析了JavaScript表单验证相关的字符串判断、正则验证、计算等相关操作技巧,需要的朋友可以参考下
    2020-01-01
  • 微信小程序自定义组件与页面的相互传参

    微信小程序自定义组件与页面的相互传参

    这篇文章主要为大家介绍了微信小程序自定义组件与页面的相互传参过程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪
    2022-04-04
  • Bootstrap实现省市区三级联动(亲测可用)

    Bootstrap实现省市区三级联动(亲测可用)

    这篇文章主要为大家详细介绍了Bootstrap实现省市区三级联动,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-07-07
  • 十个开发人员面临的最常见的JavaScript问题总结

    十个开发人员面临的最常见的JavaScript问题总结

    今天,JavaScript 是几乎所有现代 Web 应用的核心。这就是为什么JavaScript问题,以及找到导致这些问题的错误,是 Web 发者的首要任务。本文总结了十个常见的问题及解决方法,需要的可以参考一下
    2022-11-11

最新评论