js自定义鼠标右键的实现原理及源码


Posted in Javascript onJune 23, 2014

今天来记录下js来自定义鼠标右键,同样先来分解下它的实现原理:

1、屏蔽右键默认事件;(一度我以为修改的就是默认事件)

2、对一个ul的隐藏;(这个我也曾迂腐的认为值得这样操作的都是div,汗)

3、对鼠标点击右键做出的响应,显示隐藏的ul;

4、鼠标重新点击后,ul重新被隐藏

这样来看的话,我们需要做的事情是不是就简单了很多,先上代码:

html部分

<ul id="testRight" style="width: 100px;background-color: yellow;position: absolute;z-index: 100;"> 
<li><a href="#">开始</a></li> 
<li><a href="#">暂停</a></li> 
<li><a href="#">拜拜</a></li> 
</ul>

javascript部分:

window.onload=function(){ 
var forRight=document.getElementById("testRight");//获取对象,现在太熟悉了 
forRight.style.display="none"; 
var title=forRight.getElementsByTagName("li"); 

for(var i=0;i<title.length;i++){ 
title[i].onmouseover=function(){ 
this.classname="active";//其实这里我们也可以调用其他事件吧 
}; 
title[i].onmouseout=function(){//这里也是鼠标的两个事件吧 
this.classname=""; 
}; 
} 

document.oncontextmenu=function(event){//这是实现的关键点 
var event=event||window.event;//这个都不是问题了吧 
forRight.style.display="block"; 
forRight.style.left=event.clientX+"px"; 
forRight.style.top=event.clientY+"px";//鼠标的坐标啊 
return false;//这里返回false就是为了屏蔽默认事件 
}; 
document.onclick=function(){//就是为了更形象的模仿啊 
forRight.style.display="none"; 
}; 
};

先来看今天记录的最关键的地方:document.oncontextmenu这个事件返回false的话就是屏蔽默认事件,如果我们其他都不写,只在这个事件里面写return,好像就下面这样

document.oncontextmenu=function(){ 
return false; 
}

这样的话,再点击右键也不会出现任何响应了。然后返回来再看整个的事件应用,好像除了这个事件,其他的都是比较熟悉的事件了,可就是对事件的这种整合总是缺乏,关键还是思路是创意吧,不过先不管哪儿多了,先整吧,但求熟读三千首,不求写来只问吟。扎马步,扎马步,扎马步.....

Javascript 相关文章推荐
Javascript 验证上传图片大小[客户端]
Aug 01 Javascript
了解jQuery技巧来提高你的代码(个人觉得那个jquery的手册很不错)
Feb 10 Javascript
一个可拖拽列宽表格实例演示
Nov 26 Javascript
JavaScript中的Math 使用介绍
Apr 21 Javascript
JavaScript包装对象使用详解
Jul 09 Javascript
ES6中的数组扩展方法
Aug 26 Javascript
jQuery实现可移动选项的左右下拉列表示例
Dec 26 Javascript
创建一般js对象的几种方式
Jan 19 Javascript
关于vue.js过渡css类名的理解(推荐)
Apr 10 Javascript
微信小程序实战篇之购物车的实现代码示例
Nov 30 Javascript
在layui中使用form表单监听ajax异步验证注册的实例
Sep 03 Javascript
vue实现简单计算商品价格
Sep 14 Javascript
js代码实现的加入收藏效果并兼容主流浏览器
Jun 23 #Javascript
用jquery的方法制作一个简单的导航栏
Jun 23 #Javascript
jquery的attr方法禁用表单元素禁用输入内容
Jun 23 #Javascript
JavaScript获取某年某月的最后一天附截图
Jun 23 #Javascript
一个判断抢购时间是否到达的简单的js函数
Jun 23 #Javascript
extjs_02_grid显示本地数据、显示跨域数据
Jun 23 #Javascript
javascript轻量级模板引擎juicer使用指南
Jun 22 #Javascript
You might like
汉字转化为拼音(php版)
2006/10/09 PHP
mysql 全文搜索 技巧
2007/04/27 PHP
给ECShop添加最新评论
2015/01/07 PHP
PHP中多线程的两个实现方法
2016/10/14 PHP
PHP图像识别技术原理与实现
2016/10/27 PHP
php 开发中加密的几种方法总结
2017/03/22 PHP
javascript变量作用域使用中常见错误总结
2013/03/26 Javascript
在服务端(Page.Write)调用自定义的JS方法详解
2013/08/09 Javascript
JavaScript中Number.NEGATIVE_INFINITY值的使用详解
2015/06/05 Javascript
zepto中使用swipe.js制作轮播图附swipeUp,swipeDown不起效果问题
2015/08/27 Javascript
javascript实现省市区三级联动下拉框菜单
2015/11/17 Javascript
javascript js 操作数组 增删改查的简单实现
2016/06/20 Javascript
Select2.js下拉框使用小结
2016/10/24 Javascript
Bootstrap模态窗口源码解析
2017/02/08 Javascript
JS实现根据密码长度显示安全条功能
2017/03/08 Javascript
Vue.js如何优雅的进行form validation
2017/04/07 Javascript
微信小程序页面传值实例分析
2017/04/19 Javascript
js判断传入时间和当前时间大小实例(超简单)
2018/01/11 Javascript
AngularJS select加载数据选中默认值的方法
2018/02/28 Javascript
微信小程序实现动态获取元素宽高的方法分析
2018/12/10 Javascript
解决layui的table插件无法多层级获取json数据的问题
2019/09/19 Javascript
Python3.0与2.X版本的区别实例分析
2014/08/25 Python
Python计算字符宽度的方法
2016/06/14 Python
Python使用arrow库优雅地处理时间数据详解
2017/10/10 Python
总结Python图形用户界面和游戏开发知识点
2019/05/22 Python
pytorch 准备、训练和测试自己的图片数据的方法
2020/01/10 Python
python 深度学习中的4种激活函数
2020/09/18 Python
2分钟教你实现环形/扇形菜单(基础版)
2020/01/15 HTML / CSS
Nuts.com:优质散装,批发坚果、干果和巧克力等
2017/03/21 全球购物
欧洲品牌瓷器餐具网上商店:Porzellantreff.de
2018/04/04 全球购物
美国快时尚彩妆品牌:Winky Lux(透明花瓣润唇膏)
2018/11/06 全球购物
德国户外装备、登山运动和攀岩商店:tapir store
2020/02/12 全球购物
流动人口婚育证明范本
2014/09/26 职场文书
模范教师材料大全
2014/12/16 职场文书
详解CSS不受控制的position fixed
2021/05/25 HTML / CSS
Python+Tkinter制作专属图形化界面
2022/04/01 Python