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 选择器部分整理
Oct 28 Javascript
(jQuery,mootools,dojo)使用适合自己的编程别名命名
Sep 14 Javascript
由Javascript实现的页面日历
Nov 04 Javascript
使用JavaScript链式编程实现模拟Jquery函数
Dec 21 Javascript
KnockoutJS 3.X API 第四章之数据控制流if绑定和ifnot绑定
Oct 10 Javascript
原生JS轮播图插件
Feb 09 Javascript
js事件冒泡与事件捕获详解
Feb 20 Javascript
jQuery实现的简单拖动层示例
Feb 22 Javascript
基于Bootstrap实现城市三级联动
Nov 23 Javascript
JS简单生成由字母数字组合随机字符串示例
May 25 Javascript
layui table 表格模板按钮的实例代码
Sep 21 Javascript
Node.js操作MongoDB数据库实例分析
Jan 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
dedecms 批量提取第一张图片最为缩略图的代码(文章+软件)
2009/10/29 PHP
匹配csdn用户数据库与官方用户的重合度并将重叠部分的用户筛选出来
2011/12/25 PHP
CURL状态码列表(详细)
2013/06/27 PHP
PHP中判断文件存在使用is_file还是file_exists?
2015/04/03 PHP
php实现统计目录文件大小的函数
2015/12/25 PHP
CI框架出现mysql数据库连接资源无法释放的解决方法
2016/05/17 PHP
php及codeigniter使用session-cookie的方法(详解)
2017/04/06 PHP
ThinkPHP5框架缓存查询操作分析
2018/05/30 PHP
6个常见的 PHP 安全性攻击实例和阻止方法
2020/12/16 PHP
跟着JQuery API学Jquery 之二 属性
2010/04/09 Javascript
用Javascript评估用户输入密码的强度(Knockout版)
2011/11/30 Javascript
详解Webwork中Action 调用的方法
2016/02/02 Javascript
Fullpage.js固定导航栏-实现定位导航栏
2016/03/17 Javascript
微信小程序 网络API发起请求详解
2016/11/09 Javascript
javascript入门之window对象【新手必看】
2016/11/22 Javascript
Vuejs 页面的区域化与组件封装的实现
2017/09/11 Javascript
JavaScript实现构造json数组的方法分析
2018/08/17 Javascript
解决node-sass偶尔安装失败的方法小结
2018/12/05 Javascript
JavaScript中的相等操作符使用详解
2019/12/21 Javascript
openlayers实现地图测距测面
2020/09/25 Javascript
[42:00]完美世界DOTA2联赛PWL S3 Phoenix vs INK ICE 第一场 12.13
2020/12/17 DOTA
Python二维码生成库qrcode安装和使用示例
2014/12/16 Python
python 用for循环实现1~n求和的实例
2019/02/01 Python
python初学者,用python实现基本的学生管理系统(python3)代码实例
2019/04/10 Python
python自动发微信监控报警
2019/09/06 Python
HTML5印章绘制电子签章图片(中文英文椭圆章、中文英文椭圆印章)
2019/06/03 HTML / CSS
html5 Canvas画图教程(7)—canvas里画曲线之quadraticCurveTo方法
2013/01/09 HTML / CSS
英国百安居装饰建材网上超市:B&Q
2016/09/13 全球购物
zooplus德国:便宜地订购动物用品、动物饲料、动物食品
2020/05/06 全球购物
能源工程专业应届生求职信
2014/03/01 职场文书
车辆委托书范本
2014/10/05 职场文书
学校端午节活动总结
2015/02/11 职场文书
怎样写辞职信
2015/02/27 职场文书
交通安全教育主题班会
2015/08/12 职场文书
销区经理年终述职报告模板
2019/11/28 职场文书
APP界面设计技巧和注意事项
2022/04/29 杂记