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获取焦点和失去焦点事件代码
Apr 21 Javascript
js控制容器隐藏出现防止样式变化的两种方法
Apr 25 Javascript
js给网页加上背景音乐及选择音效的方法
Mar 03 Javascript
AngularJS中的过滤器使用详解
Jun 16 Javascript
再JavaScript的jQuery库中编写动画效果的指南
Aug 13 Javascript
基于javascript实现九九乘法表
Mar 27 Javascript
JS封装的选项卡TAB切换效果示例
Sep 20 Javascript
js对字符串进行编码的方法总结(推荐)
Nov 10 Javascript
javascript实现二叉树遍历的代码
Jun 08 Javascript
react-native ListView下拉刷新上拉加载实现代码
Aug 03 Javascript
Element-ui之ElScrollBar组件滚动条的使用方法
Sep 14 Javascript
三步实现ionic3点击退出app程序
Sep 17 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/04/18 PHP
PHP使用gearman进行异步的邮件或短信发送操作详解
2020/02/27 PHP
JQuery 拾色器插件发布-jquery.icolor.js
2010/10/20 Javascript
初学js 新节点的创建 删除 的步骤
2011/07/04 Javascript
屏蔽IE弹出&quot;您查看的网页正在试图关闭窗口,是否关闭此窗口&quot;的方法
2013/12/31 Javascript
JavaScript前端图片加载管理器imagepool使用详解
2014/12/29 Javascript
探讨JavaScript标签位置的存放与功能有无关系
2016/01/15 Javascript
BootStrap智能表单实战系列(九)表单图片上传的支持
2016/06/13 Javascript
JS中位置与大小的获取方法
2016/11/22 Javascript
js select下拉联动 更具级联性!
2020/04/17 Javascript
JS实现两周内自动登录功能
2017/03/23 Javascript
JavaScript数据结构之二叉树的查找算法示例
2017/04/13 Javascript
javascript实现fetch请求返回的统一拦截
2019/12/22 Javascript
Node.js API详解之 net模块实例分析
2020/05/18 Javascript
Vue 实现v-for循环的时候更改 class的样式名称
2020/07/17 Javascript
[01:54]TI4西雅图DOTA2选手欢迎晚宴 现场报道
2014/07/08 DOTA
[01:19]2014DOTA2国际邀请赛 采访TITAN战队ohaiyo 能赢DK很幸运
2014/07/12 DOTA
Python中sort和sorted函数代码解析
2018/01/25 Python
python 中if else 语句的作用及示例代码
2018/03/05 Python
python绘制立方体的方法
2018/07/02 Python
Python实现多属性排序的方法
2018/12/05 Python
Flask-WTF表单的使用方法
2019/07/12 Python
python读取Excel表格文件的方法
2019/09/02 Python
Python3之乱码\xe6\x97\xa0\xe6\xb3\x95处理方式
2020/05/11 Python
Python3交互式shell ipython3安装及使用详解
2020/07/11 Python
pandas apply多线程实现代码
2020/08/17 Python
python 基于UDP协议套接字通信的实现
2021/01/22 Python
值类型与引用类型有什么不同?请举例说明?并分别列举几种相应的数据类型
2015/10/24 面试题
物业管理应届生求职信
2013/10/28 职场文书
环保专项行动方案
2014/05/12 职场文书
小学生勤俭节约演讲稿
2014/08/28 职场文书
防火标语大全
2014/10/06 职场文书
英文道歉信
2015/01/20 职场文书
悬空寺导游词
2015/02/05 职场文书
有关信念的名言语录集锦
2019/12/06 职场文书
浅谈CSS不规则边框的生成方案
2021/05/25 HTML / CSS