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 相关文章推荐
动态加载JS文件的三种方法
Nov 08 Javascript
javascript实现的多个层切换效果通用函数实例
Jul 06 Javascript
利用Node.js制作爬取大众点评的爬虫
Sep 22 Javascript
原生和jQuery的ajax用法详解
Jan 23 Javascript
一个简易的js图片轮播效果
Jul 22 Javascript
angularjs select 赋值 ng-options配置方法
Feb 28 Javascript
详解解决使用axios发送json后台接收不到的问题
Jun 27 Javascript
Vue实现简易翻页效果源码分享
Nov 08 Javascript
JavaScript实现随机点名器实例详解
May 07 Javascript
vue实现登录拦截
Jun 29 Javascript
js+cavans实现图片滑块验证
Sep 29 Javascript
js 压缩图片的示例(只缩小体积,不更改图片尺寸)
Oct 21 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加密解密类代码
2011/11/27 PHP
Erlang的运算符(比较运算符,数值运算符,移位运算符,逻辑运算符)
2012/07/23 PHP
Linux Apache PHP Oracle 安装配置(具体操作步骤)
2013/06/17 PHP
浅谈PHP命令执行php文件需要注意的问题
2016/12/16 PHP
TP5框架页面跳转样式操作示例
2020/04/05 PHP
js+JQuery返回顶部功能如何实现
2012/12/03 Javascript
JS OffsetParent属性深入解析
2014/01/13 Javascript
jQuery实现Twitter的自动文字补齐特效
2014/11/28 Javascript
浅谈jquery.fn.extend与jquery.extend区别
2015/07/13 Javascript
详解JS中Array对象扩展与String对象扩展
2016/01/07 Javascript
jQuery简单操作cookie的插件实例
2016/01/13 Javascript
利用JQuery写一个简单的异步分页插件
2016/03/07 Javascript
Javascript 跨域知识详细介绍
2016/10/30 Javascript
微信小程序技巧之show内容展示,上传文件编码问题
2017/01/23 Javascript
基于AGS JS开发自定义贴图图层
2017/03/31 Javascript
Nodejs 复制文件/文件夹的方法
2017/08/24 NodeJs
Angular实现点击按钮后在上方显示输入内容的方法
2017/12/27 Javascript
稍微学一下Vue的数据响应式(Vue2及Vue3区别)
2019/11/21 Javascript
Vue 实现监听窗口关闭事件,并在窗口关闭前发送请求
2020/09/01 Javascript
解决vscode进行vue格式化,会自动补分号和双引号的问题
2020/10/26 Javascript
如何处理Python3.4 使用pymssql 乱码问题
2016/01/08 Python
利用Python代码实现数据可视化的5种方法详解
2018/03/25 Python
python+opencv实现阈值分割
2018/12/26 Python
学习python分支结构
2019/05/17 Python
Django3.0 异步通信初体验(小结)
2019/12/04 Python
Pytorch 搭建分类回归神经网络并用GPU进行加速的例子
2020/01/09 Python
编写一个 C 函数,该函数在一个字符串中找到可能的最长的子字符串,且该字符串是由同一字符组成的
2015/07/23 面试题
违反课堂纪律检讨书
2014/01/19 职场文书
《小池塘》教学反思
2014/02/28 职场文书
心得体会的写法
2014/09/05 职场文书
财务工作疏忽检讨书
2014/09/11 职场文书
中学生检讨书范文
2014/11/03 职场文书
教师先进个人材料
2014/12/17 职场文书
农民工工资支付承诺书
2015/05/04 职场文书
党员反邪教心得体会
2016/01/15 职场文书
Python turtle编写简单的球类小游戏
2022/03/31 Python