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 相关文章推荐
jQuery UI-Draggable 参数集合
Jan 10 Javascript
js计算两个时间之间天数差的实例代码
Nov 19 Javascript
当滚动条滚动到页面底部自动加载增加内容的js代码
May 13 Javascript
jquery实现图片随机排列的方法
May 04 Javascript
分享使用AngularJS创建应用的5个框架
Dec 05 Javascript
基于jQuery ligerUI实现分页样式
Sep 18 Javascript
bootstrap响应式表格实例详解
May 15 Javascript
微信小程序获取微信运动步数的实例代码
Jul 20 Javascript
关于Webpack dev server热加载失败的解决方法
Feb 22 Javascript
Electron autoUpdater实现Windows安装包自动更新的方法
Dec 24 Javascript
小程序云开发实现数据库异步操作同步化
May 18 Javascript
微信小程序调用天气接口并且渲染在页面过程详解
Jun 24 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中用加号与用array_merge合并数组的区别深入分析
2013/06/03 PHP
关于js和php对url编码的处理方法
2014/03/04 PHP
php使用Jpgraph创建柱状图展示年度收支表效果示例
2017/02/15 PHP
jQuery :nth-child前有无空格的区别分析
2011/07/11 Javascript
js 判断一个元素是否在页面中存在
2012/12/27 Javascript
jquery中get和post的简单实例
2014/02/04 Javascript
jQuery中的jQuery()方法用法分析
2014/12/27 Javascript
jquery中attr和prop的区别分析
2015/03/16 Javascript
js实现文件上传表单域美化特效
2015/11/02 Javascript
简单介绍jsonp 使用小结
2016/01/27 Javascript
jQuery的文档处理程序详解
2016/05/10 Javascript
JavaScript实现动态添加Form表单元素的方法示例
2017/08/14 Javascript
vue列表单项展开收缩功能之this.$refs的详解
2019/05/05 Javascript
微信小程序-API接口安全详解
2019/07/16 Javascript
python 提取文件的小程序
2009/07/29 Python
Django集成百度富文本编辑器uEditor攻略
2014/07/04 Python
Python fileinput模块使用介绍
2014/11/30 Python
python 接口_从协议到抽象基类详解
2017/08/24 Python
python print 按逗号或空格分隔的方法
2018/05/02 Python
查看Python依赖包及其版本号信息的方法
2019/08/13 Python
python Django 反向访问器的外键冲突解决
2020/05/20 Python
python语言是免费还是收费的?
2020/06/15 Python
numba提升python运行速度的实例方法
2021/01/25 Python
如何用css3实现switch组件开关的方法
2018/02/09 HTML / CSS
HTML5拖放效果的实现代码
2016/11/17 HTML / CSS
美国美发品牌:Bumble and Bumble
2016/10/08 全球购物
Mio Skincare美国官网:身体紧致及孕期身体护理
2017/03/05 全球购物
美国最灵活的移动提供商:Tello
2017/07/18 全球购物
历史专业个人求职信范文
2013/12/07 职场文书
小学爱国卫生月活动总结
2014/06/30 职场文书
书法兴趣小组活动总结
2014/07/07 职场文书
幼儿园中班教师个人工作总结
2015/02/06 职场文书
中小企业员工手册范本
2015/05/14 职场文书
驾驶员安全责任协议书
2016/03/22 职场文书
2016年幼儿园教师师德承诺书
2016/03/25 职场文书
HTML+JS实现在线朗读器
2022/02/15 Javascript