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 相关文章推荐
ExtJS 2.0实用简明教程 之ExtJS版的Hello
Apr 29 Javascript
仿微博字符限制效果实现代码
Apr 20 Javascript
json定义及jquery操作json的方法
Oct 03 Javascript
jQuery插件zTree实现删除树子节点的方法示例
Mar 08 Javascript
vue2.0多条件搜索组件使用详解
Mar 26 Javascript
初学者AngularJS的环境搭建过程
Oct 27 Javascript
vue+node+webpack环境搭建教程
Nov 05 Javascript
实例教学如何写vue插件
Nov 30 Javascript
Vue.js进阶知识点总结
Apr 01 Javascript
vue-router源码之history类的浅析
May 21 Javascript
vue 插件的方法代码详解
Jun 06 Javascript
如何用JS模拟实现数组的map方法
Jul 30 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实现的简单美国商品税计算函数
2015/07/13 PHP
Laravel框架定时任务2种实现方式示例
2018/12/08 PHP
Array对象方法参考
2006/10/03 Javascript
JS 如果改变span标签的是否隐藏属性
2011/10/06 Javascript
表头固定(利用jquery实现原理介绍)
2012/11/08 Javascript
加载远程图片时,经常因为缓存而得不到更新的解决方法(分享)
2013/06/26 Javascript
JavaScript判断文件上传类型的方法
2014/09/02 Javascript
JQuery中层次选择器用法实例详解
2015/05/18 Javascript
JS+CSS实现表格高亮的方法
2015/08/05 Javascript
基于Javascript实现倒计时功能
2016/02/22 Javascript
JQuery EasyUI Layout 在from布局自适应窗口大小的实现方法
2016/05/28 Javascript
使用JS轻松实现ionic调用键盘搜索功能(超实用)
2016/09/06 Javascript
CentOS 安装NodeJS V8.0.0的方法
2017/06/15 NodeJs
详解vue-cli项目中用json-sever搭建mock服务器
2017/11/02 Javascript
JavaScript基于数组实现的栈与队列操作示例
2018/12/22 Javascript
Nodejs在局域网配置https访问的实现方法
2020/10/17 NodeJs
[01:07:53]RNG vs VG 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
[43:18]NB vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.22
2019/09/05 DOTA
以一个投票程序的实例来讲解Python的Django框架使用
2016/02/18 Python
Python实现的密码强度检测器示例
2017/08/23 Python
Django框架多表查询实例分析
2018/07/04 Python
解决Python3 抓取微信账单信息问题
2019/07/19 Python
解决pycharm最左侧Tool Buttons显示不全的问题
2019/12/17 Python
k-means 聚类算法与Python实现代码
2020/06/01 Python
python实现KNN近邻算法
2020/12/30 Python
CSS3 :nth-child()伪类选择器实现奇偶行显示不同样式
2013/11/05 HTML / CSS
String这个类型的class为何定义成final?
2012/11/13 面试题
中间件分为哪几类
2012/03/14 面试题
医学专业毕业生个人的求职信
2013/12/04 职场文书
会计找工作求职信范文
2013/12/09 职场文书
社区义诊活动总结
2014/04/30 职场文书
单位工作证明书格式
2014/10/04 职场文书
乡镇一岗双责责任书
2015/01/29 职场文书
幼儿园六一儿童节主持词
2015/06/30 职场文书
MySQL 使用事件(Events)完成计划任务
2021/05/24 MySQL
Appium中scroll和drag_and_drop根据元素位置滑动
2022/02/15 Python