javascript中右键菜单的测试与讨论

一般在浏览器上点击鼠标右键的时候浏览器会默认的弹出一个菜单,这一个动作实际上包含了很多的信息.

当用户将鼠标移至窗口上单击右键,浏览器引擎会开始分析用户的这个动作,分析的过程在引擎内部实现,具体的代码是封装的,

这个分析过程结束后,引擎确定了用户的动作为右键单击,开始调用执行与这一动作默认对应的响应函数oncontextmenu,

如果发现oncontextmenu在当前窗口中没有被重载,那么弹出引擎自己实现的菜单,猜测这个过程可能的一部分代码是:

 

其中分析过程是我们不能够控制的,显示默认菜单是我们不能够控制的,我们唯一可以控制的是oncontextmenu这个函数,在一个window窗口里面重载了oncontextmenu,我们就可以定制自己需要的右键菜单了,可以看到如下代码的执行效果为界面上什么反应都没有

 

oncontextmenu必须返回false,这样就能屏蔽界面默认菜单了,由此我们可以推断出在引擎里这个方法应该是空的,只返回了一个

boolean值,即true

 

对于构建自己的右键菜单,我们会发现javacript提供的方式相当值得玩味

 

window.createPopup

这个createPopup方法是javacript默认提供的,也即引擎默认提供的在窗口中新建菜单对象的方法,这个方法返回的对象相当之暧昧和隐晦,不是dom元素,不是已有的默认的javascript对象(如window),它的定位就是一个菜单对象,并且这个菜单对象跟引擎默认弹出的菜单对象是一个类型的,那么问题就来了

createPopup方法都干了些什么?

应该到引擎中去注册一个新的popmenu对象,这个对象如果仔细观察会发现其实是一个卡哇伊版的window对象,它有document属性,所以当然有body,在popmenu对象里面可以放进去所有javacript的事件句柄,塞进去整个一个html页面,所以说得到了这个popmenu对象,我们就得到了一切

 

封装出一个漂亮的右键菜单开始变成下一步要做的事情,先做一个测试代码:

这段代码的测试点为:

1.document属性(它真的有这个属性)

2.body的样式

3.在body中插入一段代码

4.pop对象的显示方法,为show

 

popup.show(iX, iY, iWidth, iHeight [, oElement])

iX:横坐标

iY:纵坐标

iWidth:pop对象的宽

iHeight:pop对象的高

oElement:pop对象依赖的父元素

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值