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 相关文章推荐
Autocomplete Textbox Example javascript实现自动完成成功
Aug 17 Javascript
自定义一个jquery插件[鼠标悬浮时候 出现说明label]
Jun 27 Javascript
JS图片预加载 JS实现图片预加载应用
Dec 03 Javascript
网站基于flash实现的Banner图切换效果代码
Oct 14 Javascript
js ajaxfileupload.js上传报错的解决方法
May 05 Javascript
javascript超过容器后显示省略号效果的方法(兼容一行或者多行)
Jul 14 Javascript
jQuery remove()过滤被删除的元素(推荐)
Jul 18 jQuery
Vue组件Draggable实现拖拽功能
Dec 01 Javascript
js作用域和作用域链及预解析
Apr 11 Javascript
js使用文档就绪函数动态改变页面内容示例【innerHTML、innerText】
Nov 07 Javascript
JS实现简单打字测试
Jun 24 Javascript
vue 数据操作相关总结
Dec 17 Vue.js
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使用glob函数快速查询指定目录文件的方法
2014/11/15 PHP
浅析Yii2缓存的使用
2016/05/10 PHP
php使用array_chunk函数将一个数组分割成多个数组
2018/12/05 PHP
jquery 与NVelocity 产生冲突的解决方法
2011/06/13 Javascript
JavaScript中判断对象类型的几种方法总结
2013/11/11 Javascript
用JS在浏览器中创建下载文件
2014/03/05 Javascript
JQuery性能优化的几点建议
2014/05/14 Javascript
javascript实现校验文件上传控件实例
2015/04/20 Javascript
有关json_decode乱码及NULL的问题
2015/10/13 Javascript
跟我学习JScript的Bug与内存管理
2015/11/18 Javascript
vueJS简单的点击显示与隐藏的效果【实现代码】
2016/05/03 Javascript
JS使用正则表达式过滤多个词语并替换为相同长度星号的方法
2016/08/03 Javascript
详解React-Todos入门例子
2016/11/08 Javascript
AngularJS实现ajax请求的方法
2016/11/22 Javascript
JQuery中Ajax的操作完整例子
2017/03/07 Javascript
js for终止循环 跳出多层循环
2018/10/04 Javascript
Python CSV模块使用实例
2015/04/09 Python
python通过elixir包操作mysql数据库实例代码
2018/01/31 Python
django js实现部分页面刷新的示例代码
2018/05/28 Python
Python使用combinations实现排列组合的方法
2018/11/13 Python
python图片二值化提高识别率代码实例
2019/08/24 Python
python 操作hive pyhs2方式
2019/12/21 Python
Python bytes string相互转换过程解析
2020/03/05 Python
通过代码实例了解Python异常本质
2020/09/16 Python
Python实现手势识别
2020/10/21 Python
html5中canvas学习笔记2-判断浏览器是否支持canvas
2013/01/06 HTML / CSS
雅萌 (YA-MAN) :日本美容家电领域的龙头企业
2017/05/12 全球购物
澳大利亚排名第一的儿童在线玩具商店:Toy Galaxy
2018/10/06 全球购物
德国二手设计师时装和复古时装跳蚤市场:Mädchenflohmarkt
2020/11/09 全球购物
培训主管的职业生涯规划
2014/03/06 职场文书
增员口号大全
2014/06/18 职场文书
七年级上册语文教学计划
2015/01/22 职场文书
幼儿教师三分钟演讲稿
2019/06/21 职场文书
Pytest allure 命令行参数的使用
2021/04/18 Python
JS如何实现基于websocket的多端桥接平台
2021/05/14 Javascript
Python实现打乒乓小游戏
2021/09/25 Python