如何实现浏览器上的右键菜单


Posted in Javascript onJuly 10, 2006

 

 最近在程序员大本营中的讨论中有一位老兄提出如何在浏览器中实现类似于应用程序的鼠标右击后出现右键菜单的效果。唯鱼试了试,发现不是很难解决。现在就将源码和原理说出来和大家共享一下。哈,其实效果不是很完美啦,如果哪位大侠有更好的解决方法。可以给唯鱼yyu@enet.com.cn来信罗。 

首先要解决的问题是在怎样的情况鼠标右击不会出现IE的菜单。思路可以有两个,一个是将焦点移开,还有一个就是点在网页的什么地方不会出现右键菜单,而且会响应鼠标点击消息。(哈哈,废话一大堆。思路吗?总要多想想才有的) 

想了想, 总结出的下面几种方法
1、响应右键消息出一个ALERT框(还有点新鲜的东东没有)。 
2、响应右键消息后弹出一个新的窗口。将初始页的的焦点移开。 
可是经过试验后发现只有窗口出现在鼠标右击的位置时,才会没有浏览器的右键菜单出现。 
3、响应右键消息后弹出一个HTML的对话框。即使用showModalDialog来开启一个HTML对话框。使用这种方式可以让右键菜单不会出现。但是有一个问题是使用使用showModalDialog开启的对话框不会向使用Window.Open开启的对话框一样可以移出屏幕所在的范围。就是说始终可以看见有一个对话框出现在屏幕上。这条路也不能走了。 
4、呵呵,最后一招了,唯鱼偶尔发现在Select上进行鼠标右击或左击都不会有反应。那么如果每次鼠标都点在Select上,不就不会出现浏览器的右键菜单了。 

下面就是一个例子,感兴趣的可以把下面的拷贝成Test.html,就可以看看效果了。

< HTML> 

< title>VFish Test< /title> 

< script> 

var x, y; 

document.onmousemove=moveMouse 

document.onmousedown=click 

function moveMouse() 

Layer1.style.left = event.clientX - 2; 

Layer1.style.top = event.clientY - 2; 

function click() 

if (event.button==2) 

x = event.clientX; 

y = event.clientY; 

Layer1.style.visibility=""; 

window.setTimeout("showMenu();", 500); 

else 

HiddenPop(); 

PopMenu.style.visibility='hidden'; 

function showMenu() 

PopMenu.style.left = x- 2; 

PopMenu.style.top = y- 2; 

PopMenu.style.visibility=""; 

HiddenPop(); 

function HiddenPop() 

Layer1.style.visibility='hidden'; 

< /script> 

< BODY> 

在窗口中右击一下看看出什么:) 

< div id=Layer1 style="position:absolute; width:4px; height:4px; z-index:3; visibility: hidden"> 

< select style="width:4">< /select> 

< /div> 

< div id=PopMenu style="position:absolute; width:100px; height:100px; z-index:1; visibility: hidden"> 

< table border=2 width=100 > 

< TH align="center" color="sliver" onclick=""> 

唯鱼的菜单 

< /tH> 

< tr> 

< td> 

click it!:) 

< /td> 

< /tr> 

< /table> 

< /div> 

< /BODY> 

< /HTML>

Javascript 相关文章推荐
广告显示判断
Aug 31 Javascript
通过JAVAScript实现页面自适应
Jan 19 Javascript
循环 vs 递归浅谈
Feb 28 Javascript
jquery统计输入文字的个数并对其进行判断
Jan 07 Javascript
js中小数转换整数的方法
Jan 26 Javascript
js设置控件的隐藏与显示的两种方法
Aug 21 Javascript
基于CSS3和jQuery实现跟随鼠标方位的Hover特效
Jul 25 Javascript
vue移动端监听滚动条高度的实现方法
Sep 03 Javascript
CSS3 动画卡顿性能优化的完美解决方案
Sep 20 Javascript
JS实现滚动条触底加载更多
Sep 19 Javascript
Vue 监听元素前后变化值实例
Jul 29 Javascript
json.stringify()与json.parse()的区别以及用处
Jan 25 Javascript
载入进度条 效果
Jul 08 #Javascript
让广告代码不再影响你的网页加载速度
Jul 07 #Javascript
一段实时更新的时间代码
Jul 07 #Javascript
根据分辨率不同,调用不同的css文件
Jul 07 #Javascript
鼠标图片振动代码
Jul 06 #Javascript
显示、隐藏密码
Jul 01 #Javascript
让焦点自动跳转
Jul 01 #Javascript
You might like
在项目中寻找代码的坏命名
2012/07/14 PHP
yii2.0实现验证用户名与邮箱功能
2015/12/22 PHP
thinkPHP5框架闭包函数与子查询传参用法示例
2018/08/02 PHP
javascript 二维数组的实现与应用
2010/03/16 Javascript
用jquery与css打造个性化的单选框和复选框
2010/10/20 Javascript
JS 退出系统并跳转到登录界面的实现代码
2013/06/29 Javascript
jquery禁用右键单击功能屏蔽F5刷新
2014/03/17 Javascript
node.js中的querystring.escape方法使用说明
2014/12/10 Javascript
js控制网页背景音乐播放与停止的方法
2015/02/06 Javascript
nodejs实现获取某宝商品分类
2015/05/28 NodeJs
jQuery实现的简洁下拉菜单导航效果代码
2015/08/26 Javascript
JS实现点击登录弹出窗口同时背景色渐变动画效果
2016/03/25 Javascript
Bootstrap select多选下拉框实现代码
2016/12/23 Javascript
微信JSAPI支付操作需要注意的细节
2017/01/10 Javascript
javascript基本数据类型和转换
2017/03/17 Javascript
详解vue.js移动端导航navigationbar的封装
2017/07/05 Javascript
使用jQuery实现鼠标点击左右按钮滑动切换
2017/08/04 jQuery
ES6学习教程之块级作用域详解
2017/10/09 Javascript
vue中的provide/inject的学习使用
2018/05/09 Javascript
Javascript Worker子线程代码实例
2020/02/20 Javascript
uniapp 仿微信的右边下拉选择弹出框的实现代码
2020/07/12 Javascript
处理Python中的URLError异常的方法
2015/04/30 Python
Python使用爬虫爬取静态网页图片的方法详解
2018/06/05 Python
深入解析神经网络从原理到实现
2019/07/26 Python
python实现学生成绩测评系统
2020/06/22 Python
Python+OpenCV图像处理——实现轮廓发现
2020/10/23 Python
python 窃取摄像头照片的实现示例
2021/01/08 Python
Skyscanner英国:苏格兰的全球三大领先航班搜索服务之一
2017/11/09 全球购物
JD Sports马来西亚:英国领先的运动鞋和运动服饰零售商
2018/03/13 全球购物
建筑施工员岗位职责
2013/11/26 职场文书
2014城乡环境综合治理工作总结
2014/12/19 职场文书
2015年科协工作总结
2015/05/19 职场文书
Python使用sql语句对mysql数据库多条件模糊查询的思路详解
2021/04/12 Python
详解PHP Swoole与TCP三次握手
2021/05/27 PHP
Python爬虫入门案例之爬取去哪儿旅游景点攻略以及可视化分析
2021/10/16 Python
一文搞清楚MySQL count(*)、count(1)、count(col)区别
2022/03/03 MySQL