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 相关文章推荐
简单三步,搞掂内存泄漏
Mar 10 Javascript
ie8下修改input的type属性报错的解决方法
Sep 16 Javascript
jQuery使用中可能被XSS攻击的一些危险环节提醒
May 24 Javascript
Bootstrap+jfinal实现省市级联下拉菜单
May 30 Javascript
JavaScript中自带的 reduce()方法使用示例详解
Aug 10 Javascript
微信小程序 支付后台java实现实例
May 09 Javascript
为什么我们要做三份 Webpack 配置文件
Sep 18 Javascript
Vue2.0子同级组件之间数据交互方法
Feb 28 Javascript
重新认识vue之事件阻止冒泡的实现
Aug 02 Javascript
JavaScript常见鼠标事件与用法分析
Jan 03 Javascript
15分钟深入了解JS继承分类、原理与用法
Jan 19 Javascript
JavaScript实现预览本地上传图片功能完整示例
Mar 08 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
全国FM电台频率大全 - 7 吉林省
2020/03/11 无线电
php修改时间格式的代码
2011/05/29 PHP
Yii框架关联查询with用法分析
2014/12/02 PHP
php session实现多级目录存放实现代码
2016/02/03 PHP
PHP浮点数的一个常见问题
2016/03/10 PHP
利用PHP抓取百度阅读的方法示例
2016/12/18 PHP
js left,right,mid函数
2008/06/10 Javascript
javascript void(0)的妙用
2009/10/21 Javascript
JS动态添加iframe的代码
2015/09/14 Javascript
jquery插件方式实现table查询功能的简单实例
2016/06/06 Javascript
DOM操作原生js 的bug,使用jQuery 可以消除的解决方法
2016/09/04 Javascript
原生js实现电商侧边导航效果
2017/01/19 Javascript
浅谈Angular路由守卫
2017/08/26 Javascript
纯js实现画一棵树的示例
2017/09/05 Javascript
vue父组件中获取子组件中的数据(实例讲解)
2017/09/27 Javascript
JavaScript数组常用的增删改查与其他属性详解
2020/10/13 Javascript
[06:40]2014DOTA2西雅图国际邀请赛 DK战队巡礼
2014/07/07 DOTA
用Python展示动态规则法用以解决重叠子问题的示例
2015/04/02 Python
Python multiprocessing模块中的Pipe管道使用实例
2015/04/11 Python
python3使用pyqt5制作一个超简单浏览器的实例
2017/10/19 Python
python matplotlib:plt.scatter() 大小和颜色参数详解
2020/04/14 Python
pytorch实现查看当前学习率
2020/06/24 Python
Python+Opencv身份证号码区域提取及识别实现
2020/08/25 Python
PyQT5速成教程之Qt Designer介绍与入门
2020/11/02 Python
德国黑胶唱片、街头服装及运动鞋网上商店:HHV
2018/08/24 全球购物
MAC Cosmetics巴西官方网站:M·A·C彩妆
2019/04/18 全球购物
高级Java程序员面试题
2016/06/23 面试题
省优秀教师事迹材料
2014/01/30 职场文书
会计专业毕业生求职信
2014/07/04 职场文书
大学生交通专业求职信
2014/09/01 职场文书
高中毕业典礼演讲稿
2014/09/09 职场文书
营销计划书范文
2015/01/17 职场文书
布达拉宫的导游词
2015/02/02 职场文书
2016年学校党支部创先争优活动总结
2016/04/05 职场文书
导游词之凤凰古城
2019/10/22 职场文书
Jupyter notebook 不自动弹出网页的解决方案
2021/05/21 Python