时间:2021-05-18
最近在程序员大本营中的讨论中有一位老兄提出如何在浏览器中实现类似于应用程序的鼠标右击后出现右键菜单的效果。唯鱼试了试,发现不是很难解决。现在就将源码和原理说出来和大家共享一下。哈,其实效果不是很完美啦,如果哪位大侠有更好的解决方法。可以给唯鱼yyu@enet.com.cn来信罗。
首先要解决的问题是在怎样的情况鼠标右击不会出现IE的菜单。思路可以有两个,一个是将焦点移开,还有一个就是点在网页的什么地方不会出现右键菜单,而且会响应鼠标点击消息。(哈哈,废话一大堆。思路吗?总要多想想才有的)
想了想,总结出的下面几种方法
1、响应右键消息出一个ALERT框(还有点新鲜的东东没有)。
2、响应右键消息后弹出一个新的窗口。将初始页的的焦点移开。
可是经过试验后发现只有窗口出现在鼠标右击的位置时,才会没有浏览器的右键菜单出现。
3、响应右键消息后弹出一个HTML的对话框。即使用showModalDialog来开启一个HTML对话框。使用这种方式可以让右键菜单不会出现。但是有一个问题是使用使用showModalDialog开启的对话框不会向使用Window.Open开启的对话框一样可以移出屏幕所在的范围。就是说始终可以看见有一个对话框出现在屏幕上。这条路也不能走了。
4、呵呵,最后一招了,唯鱼偶尔发现在Select上进行鼠标右击或左击都不会有反应。那么如果每次鼠标都点在Select上,不就不会出现浏览器的右键菜单了。
下面就是一个例子,感兴趣的可以把下面的拷贝成Test.html,就可以看看效果了。
<HTML>
<title>VFishTest</title>
<script>
varx,y;
document.onmousemove=moveMouse
document.onmousedown=click
functionmoveMouse()
{
Layer1.style.left=event.clientX-2;
Layer1.style.top=event.clientY-2;
}
functionclick()
{
if(event.button==2)
{
x=event.clientX;
y=event.clientY;
Layer1.style.visibility="";
window.setTimeout("showMenu();",500);
}
else
{
HiddenPop();
PopMenu.style.visibility='hidden';
}
}
functionshowMenu()
{
PopMenu.style.left=x-2;
PopMenu.style.top=y-2;
PopMenu.style.visibility="";
HiddenPop();
}
functionHiddenPop()
{
Layer1.style.visibility='hidden';
}
</script>
<BODY>
在窗口中右击一下看看出什么:)
<divid=Layer1style="position:absolute;width:4px;height:4px;z-index:3;visibility:hidden">
<selectstyle="width:4"></select>
</div>
<divid=PopMenustyle="position:absolute;width:100px;height:100px;z-index:1;visibility:hidden">
<tableborder=2width=100>
<THalign="center"color="sliver"onclick="">
唯鱼的菜单
</tH>
<tr>
<td>
clickit!:)
</td>
</tr>
</table>
</div>
</BODY>
</HTML>
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
电脑设置兼容模式的方法: 1、打开IE浏览器后没有看到菜单栏导航,我们可以在IE浏览器最上方的空白处右键鼠标,然后将菜单栏勾选中。 2、点击IE浏览器菜单栏
序:用js实现菜单命令虽然在技术上讲没什么,不过这个算是比较全了。每当我们看到别人网页上的打开、打印、前进、另存为、后退、关闭本窗口、禁用右键等实现浏览器命令的
在Web端,通常是不需要右键菜单,各个浏览器也有自己的右键菜单。但是对于一些特殊的网页,是需要右键菜单来增加用户体验的,比如百度音乐,QQ邮箱,相信大家都在We
火狐浏览器升级方法如下: 1、打开火狐浏览器,在页面左上角空白处点击鼠标右键,在弹出框中点击“菜单栏”。 2、然后点击菜单栏上面的“帮助”,在弹出框中点击“
在VisualStudio2010(RC)中右键点击.aspx页面已不复存在"browsewith"菜单项。那要如何修改调试时使用的默认浏览器呢? 默认情