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 相关文章推荐
jquery动态增加删除表格行的小例子
Nov 14 Javascript
javascript实现网页子页面遍历回调的方法(涉及 window.frames、递归函数、函数上下文)
Jul 27 Javascript
包含中国城市的javascript对象实例
Aug 03 Javascript
jQuery实现验证年龄简单思路
Feb 24 Javascript
jquery ztree实现模糊搜索功能
Feb 25 Javascript
AngularJS表达式讲解及示例代码
Aug 16 Javascript
在线引用最新jquery文件的实现方法
Aug 26 Javascript
利用Plupload.js解决大文件上传问题, 带进度条和背景遮罩层
Mar 15 Javascript
为JQuery EasyUI 表单组件增加焦点切换功能的方法
Apr 13 jQuery
javascript中join方法实例讲解
Feb 21 Javascript
Vee-validate 父组件获取子组件表单校验结果的实例代码
May 20 Javascript
Javascript中window.name属性详解
Nov 19 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 jQuery表单,带验证具体实现方法
2014/02/15 PHP
使用php的HTTP请求的库Requests实现美女图片墙
2015/02/22 PHP
php实现Mongodb自定义方式生成自增ID的方法
2015/03/23 PHP
php实现将任意进制数转换成10进制的方法
2015/04/17 PHP
PHP针对字符串开头和结尾的判断方法
2016/07/11 PHP
复制Input内容的js代码_支持所有浏览器,修正了Firefox3.5以上的问题
2010/06/21 Javascript
extjs grid设置某列背景颜色和字体颜色的方法
2010/09/03 Javascript
jquery1.83 之前所有与异步列队相关的模块详细介绍
2012/11/13 Javascript
fullpage.js全屏滚动插件使用实例
2016/09/06 Javascript
BootStrap Validator 版本差异问题导致的submitHandler失效问题的解决方法
2016/12/01 Javascript
Bootstrap select多选下拉框实现代码
2016/12/23 Javascript
详解nodejs实现本地上传图片并预览功能(express4.0+)
2017/06/28 NodeJs
引入JavaScript时alert弹出框显示中文乱码问题
2017/09/16 Javascript
JavaScript实现简单生成随机颜色的方法
2017/09/21 Javascript
cocos2dx+lua实现橡皮擦功能
2018/12/20 Javascript
微信小程序 简易计算器实现代码实例
2019/09/02 Javascript
微信小程序 动态修改页面数据及参数传递过程详解
2019/09/27 Javascript
nodeJs的安装与npm全局环境变量的配置详解
2020/01/06 NodeJs
JS面向对象编程基础篇(二) 封装操作实例详解
2020/03/03 Javascript
vue 动态组件用法示例小结
2020/03/06 Javascript
微信小程序自定义弹出模态框禁止底部滚动功能
2020/03/09 Javascript
原生js实现日期选择插件
2020/05/21 Javascript
[01:23:59]2018DOTA2亚洲邀请赛 4.1 小组赛 B组 VP vs Secret
2018/04/03 DOTA
用python记录运行pid,并在需要时kill掉它们的实例
2017/01/16 Python
解决pyCharm中 module 调用失败的问题
2020/02/12 Python
python是怎么被发明的
2020/06/15 Python
python自动生成证件号的方法示例
2021/01/14 Python
全民健身日活动方案
2014/01/29 职场文书
加入学生会演讲稿
2014/04/24 职场文书
创先争优一句话承诺
2014/05/29 职场文书
学生评语集锦
2015/01/04 职场文书
餐厅收银员岗位职责
2015/04/07 职场文书
2015年城市管理工作总结
2015/05/23 职场文书
工作报告范文
2019/06/20 职场文书
Python Django 后台管理之后台模型属性详解
2021/04/25 Python
mysql查找连续出现n次以上的数字
2022/05/11 MySQL