JavaScript 对任意元素,自定义右键菜单的实现方法


Posted in Javascript onMay 08, 2013

一、一些概念:

1、鼠标事件有一个botton属性:返回一个整数,用于表示点击的是哪个鼠标按键。

BUG:在IE和标准DOM的鼠标事件中,唯一一个button属性值相同的是“单击右键”事件,都返回2。

2、事件onmousedown:表示鼠标按键按下的动作。

  事件oncontextmenu:点击鼠标触发的另一个事件。

3、中断默认事件处理函数的方法:IE中设置returnValue=false;  标准DOM中调用preventDefault()方法。

4、事件对象:①在IE中,事件对象是window对象的一个event属性。

声明:JavaScript 对任意元素,自定义右键菜单的实现方法

 

②在标准DOM中,事件对象是事件处理函数的唯一参数。

声明:JavaScript 对任意元素,自定义右键菜单的实现方法

 

解决兼容性:JavaScript 对任意元素,自定义右键菜单的实现方法

 

二、实现:

HTML:

    <p id="p1">Uncle Cat is a fat white cat !</p>
    <div id="d1">
        <a>剪切</a>
        <a>复制</a>
        <a>粘贴</a>
    </div>

javascript:
window.onload=function(){
    rightmenu('p1','d1');
}
/****
*
 封装右键菜单函数:
*

elementID   要自定义右键菜单的 元素的id
*

menuID
  要显示的右键菜单DIv的 id
*/
function rightmenu(elementID,menuID){

var menu=document.getElementById(menuID);      //获取菜单对象

var element=document.getElementById(elementID);//获取点击拥有自定义右键的 元素

element.onmousedown=function(aevent){         //设置该元素的 按下鼠标右键右键的 处理函数


if(window.event)aevent=window.event;      //解决兼容性


if(aevent.button==2){                   //当事件属性button的值为2时,表用户按下了右键



document.oncontextmenu=function(aevent){
   

if(window.event){
       

aevent=window.event;




aevent.returnValue=false;         //对IE 中断 默认点击右键事件处理函数



}else{




aevent.preventDefault();          //对标准DOM 中断 默认点击右键事件处理函数



};


};


menu.style.cssText='display:block;top:'+aevent.clientY+'px;'+'left:'+aevent.clientX+'px;'


//将菜单相对 鼠标定位


}

}

menu.onmouseout=function(){                  //设置 鼠标移出菜单时 隐藏菜单


setTimeout(function(){menu.style.display="none";},400);

}
}
Javascript 相关文章推荐
javascript 图片上传预览-兼容标准
Jun 01 Javascript
深入理解JavaScript系列(8) S.O.L.I.D五大原则之里氏替换原则LSP
Jan 15 Javascript
使用iframe window的scroll方法控制iframe页面滚动
Mar 05 Javascript
Javascript实现多彩雪花从天降散落效果的方法
Feb 02 Javascript
javascript实现的淘宝旅行通用日历组件用法实例
Aug 03 Javascript
jQuery事件委托之Safari
Jul 05 Javascript
利用JavaScript判断浏览器类型及版本
Aug 23 Javascript
React-router v4 路由配置方法小结
Aug 08 Javascript
AngularJS实现自定义指令及指令配置项的方法
Nov 20 Javascript
使用vue-cli编写vue插件的方法
Feb 26 Javascript
用p5.js制作烟花特效的示例代码
Mar 21 Javascript
微信小程序自定义支持图片的弹窗
Dec 21 Javascript
深入document.write()与HTML4.01的非成对标签的详解
May 08 #Javascript
使用JavaScript 实现各种跨域的方法
May 08 #Javascript
jQuery根据纬度经度查看地图处理程序
May 08 #Javascript
使用JavaScript 实现对象 匀速/变速运动的方法
May 08 #Javascript
JavaScript 创建运动框架的实现代码
May 08 #Javascript
jQuery输入城市查看地图使用介绍
May 08 #Javascript
深入Javascript函数、递归与闭包(执行环境、变量对象与作用域链)使用详解
May 08 #Javascript
You might like
浅谈php serialize()与unserialize()的用法
2013/06/05 PHP
PHP @ at 记号的作用示例介绍
2014/10/10 PHP
typecho插件编写教程(五):核心代码
2015/05/28 PHP
PHP基于PDO调用sqlserver存储过程通用方法【基于Yii框架】
2017/10/07 PHP
PHP使用Redis长连接的方法详解
2018/02/12 PHP
使用javascript过滤html的字符串(注释标记法)
2013/07/08 Javascript
js 判断图片是否加载完以及实现图片的预下载
2014/08/14 Javascript
node.js中的fs.statSync方法使用说明
2014/12/16 Javascript
this,this,再次讨论javascript中的this,超全面(经典)
2016/01/05 Javascript
百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换
2016/02/19 Javascript
Js删除数组中某一项或几项的几种方法(推荐)
2016/07/27 Javascript
JS控制静态页面之间传递参数获取参数并应用的简单实例
2016/08/10 Javascript
jQuery中的AjaxSubmit使用讲解
2016/09/25 Javascript
深入解析koa之异步回调处理
2019/06/17 Javascript
JavaScript实现英语单词题库
2019/12/24 Javascript
[45:10]NB vs Liquid Supermajor小组赛 A组胜者组决赛 BO3 第二场 6.2
2018/06/04 DOTA
python函数缺省值与引用学习笔记分享
2013/02/10 Python
Python连接mssql数据库编码问题解决方法
2015/01/01 Python
Python六大开源框架对比
2015/10/19 Python
python简单实现刷新智联简历
2016/03/30 Python
python简单商城购物车实例代码
2018/03/15 Python
Python3使用SMTP发送带附件邮件
2020/06/16 Python
python  Django中的apps.py的目的是什么
2018/10/15 Python
解决Pandas的DataFrame输出截断和省略的问题
2019/02/08 Python
Python3.5 + sklearn利用SVM自动识别字母验证码方法示例
2019/05/10 Python
对Django的restful用法详解(自带的增删改查)
2019/08/28 Python
python 多进程并行编程 ProcessPoolExecutor的实现
2019/10/11 Python
python编写微信公众号首图思路详解
2019/12/13 Python
python字符串的index和find的区别详解
2020/06/20 Python
python开发入门——列表生成式
2020/09/03 Python
经理管理专业自荐信范文
2013/12/31 职场文书
运动会800米加油稿
2014/02/22 职场文书
2014年大学生社会实践自我鉴定
2014/09/26 职场文书
2015年小学开学寄语
2015/02/27 职场文书
小鞋子观后感
2015/06/05 职场文书
2019奶茶店创业计划书范本,值得你借鉴
2019/08/14 职场文书