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


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 相关文章推荐
jQuery深拷贝Json对象简单示例
Jul 06 Javascript
微信小程序 页面传值详解
Mar 10 Javascript
vue-cli的webpack模板项目配置文件分析
Apr 01 Javascript
vue-music关于Player播放器组件详解
Nov 28 Javascript
JavaScript设计模式之单例模式原理与用法实例分析
Jul 26 Javascript
ng-events类似ionic中Events的angular全局事件
Sep 05 Javascript
基于Vue组件化的日期联动选择器功能的实现代码
Nov 30 Javascript
微信小程序中悬浮窗功能的实现代码
Aug 02 Javascript
使用vue实现多规格选择实例(SKU)
Aug 23 Javascript
浅谈vue3中effect与computed的亲密关系
Oct 10 Javascript
JS回调函数深入理解
Oct 16 Javascript
Vue Elenent实现表格相同数据列合并
Nov 30 Vue.js
载入进度条 效果
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
我的论坛源代码(七)
2006/10/09 PHP
ThinkPHP关联模型操作实例分析
2012/09/23 PHP
php压缩HTML函数轻松实现压缩html/js/Css及注意事项
2013/01/27 PHP
浅谈PHP发送HTTP请求的几种方式
2017/07/25 PHP
List all the Databases on a SQL Server
2007/06/21 Javascript
jQuery 淡入淡出 png图在ie8下有黑色边框的解决方法
2013/03/05 Javascript
js 实现日期灵活格式化的小例子
2013/07/14 Javascript
jQuery .attr()和.removeAttr()方法操作元素属性示例
2013/07/16 Javascript
JavaScript instanceof 的使用方法示例介绍
2013/10/23 Javascript
js实现select组件的选择输入过滤代码
2014/10/14 Javascript
深入探密Javascript数组方法
2015/01/08 Javascript
JavaScript三元运算符的多种使用技巧
2015/04/16 Javascript
微信小程序 Nginx环境配置详细介绍
2017/02/14 Javascript
jQuery使用DataTable实现删除数据后重新加载功能
2017/02/27 Javascript
ES6入门教程之Class和Module详解
2017/05/17 Javascript
详解webpack 如何集成第三方js库
2017/06/29 Javascript
vue音乐播放器插件vue-aplayer的配置及其使用实例详解
2017/07/10 Javascript
JS基于递归实现网页版计算器的方法分析
2017/12/20 Javascript
VUE 使用中踩过的坑
2018/02/08 Javascript
webpack打包多页面的方法
2018/11/30 Javascript
Javascript迭代、递推、穷举、递归常用算法实例讲解
2019/02/01 Javascript
JavaScript遍历数组的三种方法map、forEach与filter实例详解
2019/02/27 Javascript
浅谈react-router@4.0 使用方法和源码分析
2019/06/04 Javascript
[38:41]2014 DOTA2国际邀请赛中国区预选赛 LGD VS CNB
2014/05/22 DOTA
利用python为运维人员写一个监控脚本
2018/03/25 Python
python pandas获取csv指定行 列的操作方法
2019/07/12 Python
Python脚本破解压缩文件口令实例教程(zipfile)
2020/06/14 Python
HTML5 placeholder(空白提示)属性介绍
2013/08/07 HTML / CSS
SEPHORA丝芙兰德国官方购物网站:化妆品、护肤品和香水
2020/01/21 全球购物
数据库的约束含义
2012/09/09 面试题
this关键字的作用
2016/01/30 面试题
银行营业厅大堂经理岗位职责
2014/01/06 职场文书
群众路线个人整改方案
2014/10/25 职场文书
2019关于实习生工作安排及待遇的管理方案!
2019/07/16 职场文书
MySQL创建定时任务
2022/01/22 MySQL
win10电脑双屏显示一个黑屏怎么办?win10电脑双屏显示一个黑屏解决方法
2022/07/15 数码科技