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 相关文章推荐
Extjs学习笔记之八 继承和事件基础
Jan 08 Javascript
前端开发部分总结[兼容性、DOM操作、跨域等](持续更新)
Mar 04 Javascript
DB.ASP 用Javascript写ASP很灵活很好用很easy
Jul 31 Javascript
jquery对象和javascript对象即DOM对象相互转换
Aug 07 Javascript
JavaScript中的标签语句用法分析
Feb 10 Javascript
JS实现选中当前菜单后高亮显示的导航条效果
Oct 15 Javascript
基于JS实现横线提示输入验证码随验证码输入消失(js验证码的实现)
Oct 27 Javascript
微信小程序 共用变量值的实现
Jul 12 Javascript
Vue 2.0入门基础知识之内部指令详解
Oct 15 Javascript
详解微信小程序实现仿微信聊天界面(各种细节处理)
Feb 17 Javascript
vue+elementUi图片上传组件使用详解
Aug 20 Javascript
基于javascript的无缝滚动动画实现2
Aug 07 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
十大催泪虐心动漫电影,有几部你还没看
2020/03/04 日漫
phpMyAdmin下载、安装和使用入门教程
2007/05/31 PHP
php使用cookie实现记住用户名和密码实现代码
2015/04/27 PHP
php正则表达式获取内容所有链接
2015/07/24 PHP
PHP空值检测函数与方法汇总
2017/11/19 PHP
灵活应用js调试技巧解决样式问题的步骤分享
2012/03/15 Javascript
jquery聚焦文本框与扩展文本框聚焦方法
2012/10/12 Javascript
javascript自然分类法算法实现代码
2013/10/11 Javascript
一个简单的动态加载js和css的jquery代码
2014/09/01 Javascript
跟我学习javascript的隐式强制转换
2015/11/16 Javascript
JS获取中文拼音首字母并通过拼音首字母快速查找页面内对应中文内容的方法【附demo源码】
2016/08/19 Javascript
JS获取多维数组中相同键的值实现方法示例
2017/01/06 Javascript
Nodejs 复制文件/文件夹的方法
2017/08/24 NodeJs
vue-resource + json-server模拟数据的方法
2017/11/02 Javascript
js中的数组对象排序分析
2018/12/11 Javascript
JavaScript创建、读取和删除cookie
2019/09/03 Javascript
php使用递归与迭代实现快速排序示例
2014/01/23 Python
Python使用MD5加密字符串示例
2014/08/22 Python
在Gnumeric下使用Python脚本操作表格的教程
2015/04/14 Python
python在windows下创建隐藏窗口子进程的方法
2015/06/04 Python
Android模拟器无法启动,报错:Cannot set up guest memory ‘android_arm’ Invalid argument的解决方法
2016/07/01 Python
浅谈Python浅拷贝、深拷贝及引用机制
2016/12/15 Python
Python 绘图和可视化详细介绍
2017/02/11 Python
python+ffmpeg批量去视频开头的方法
2019/01/09 Python
python读文件的步骤
2019/10/08 Python
python 并发下载器实现方法示例
2019/11/22 Python
在pycharm中为项目导入anacodna环境的操作方法
2020/02/12 Python
Pycharm内置终端及远程SSH工具的使用教程图文详解
2020/03/19 Python
Python学习工具jupyter notebook安装及用法解析
2020/10/23 Python
什么是CSS3 HSLA色彩模式?HSLA模拟渐变色条
2016/04/26 HTML / CSS
程序设计HTML5 Canvas API
2013/04/08 HTML / CSS
香港家用健身器材、运动器材及健康美容仪器专门店:FitBoxx
2019/12/05 全球购物
工程部经理岗位职责
2013/12/08 职场文书
5.1手机促销活动
2014/01/17 职场文书
食品科学与工程专业毕业生求职信范文
2014/07/21 职场文书
如何解决springcloud feign 首次调用100%失败的问题
2021/06/23 Java/Android