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实现的分页函数
Feb 07 Javascript
JQuery从头学起第三讲
Jul 06 Javascript
AngularJS入门知识之MVW类框架的编程思想探讨
Dec 08 Javascript
node.js路径处理方法以及绝对路径详解
Mar 04 Javascript
Ajax异步获取html数据中包含js方法无效的解决方法
Feb 20 Javascript
Javascript实现信息滚动效果
May 18 Javascript
详解使用webpack打包编写一个vue-toast插件
Nov 08 Javascript
详解vue axios用post提交的数据格式
Aug 07 Javascript
Vue在 Nuxt.js 中重定向 404 页面的方法
Apr 23 Javascript
js点击事件的执行过程实例分析【冒泡与捕获】
Apr 11 Javascript
jQuery--遍历操作实例小结【后代、同胞及过滤】
May 22 jQuery
Element-ui upload上传文件限制的解决方法
Jan 22 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
如何开发一个虚拟域名系统
2006/10/09 PHP
PHP学习笔记之二 php入门知识
2011/01/12 PHP
PHP的SQL注入实现(测试代码安全不错)
2011/02/27 PHP
Sorting Array Values in PHP(数组排序)
2011/09/15 PHP
php中获得视频时间总长度的另一种方法
2011/09/15 PHP
php操作csv文件代码实例汇总
2014/09/22 PHP
php并发加锁示例
2016/10/17 PHP
些很实用且必用的小脚本代码
2006/06/26 Javascript
jQuery中append、insertBefore、after与insertAfter的简单用法与注意事项
2020/04/04 Javascript
JS获取农历日期具体实例
2013/11/14 Javascript
高性能JavaScript循环语句和条件语句
2016/01/20 Javascript
Ionic+AngularJS实现登录和注册带验证功能
2017/02/09 Javascript
很棒的vue弹窗组件
2017/05/24 Javascript
layui table数据修改的回显方法
2019/09/04 Javascript
vue3中轻松实现switch功能组件的全过程
2021/01/07 Vue.js
[01:38]DOTA2辉夜杯 欢乐的观众现场采访
2015/12/26 DOTA
教你用Python写安卓游戏外挂
2018/01/11 Python
Python实现PS图像明亮度调整效果示例
2018/01/23 Python
python 利用pandas将arff文件转csv文件的方法
2019/02/12 Python
Python制作词云图代码实例
2019/09/09 Python
python 实现人和电脑猜拳的示例代码
2020/03/02 Python
python对execl 处理操作代码
2020/06/22 Python
python 使用递归的方式实现语义图片分割功能
2020/07/16 Python
python的数学算法函数及公式用法
2020/11/18 Python
英国排名第一的最新设计师品牌手表独立零售商:TIC Watches
2016/09/24 全球购物
欧洲第一的摇滚和金属乐队服装网站:EMP
2017/10/26 全球购物
安全检查验收制度
2014/01/12 职场文书
职业培训师职业生涯规划
2014/02/18 职场文书
《每逢佳节倍思亲》教后反思
2014/04/19 职场文书
实习生评语
2014/04/26 职场文书
保证书范文大全
2014/04/28 职场文书
学习十八大演讲稿
2014/09/15 职场文书
2014年仓库工作总结
2014/11/20 职场文书
python xlwt模块的使用解析
2021/04/13 Python
MySQL之MyISAM存储引擎的非聚簇索引详解
2022/03/03 MySQL
【DOTA2】高能暴走TK秀!PSG LGD vs ASTER - DPC 2022 WINTER TOUR CN
2022/04/02 DOTA