非常简洁高效的JS右键菜单
2010-04-16 13:28
369 查看
在制作网页的时候,我们很经常需要用到右键菜单,网上这类的控件很多,很眩. 但这类控件一般都比较大,需要写的代码比较多,而且样式比较固定. 而本组件相对简单高效, 定制性很强, 菜单全由自己DIY!
=======================需要显示的菜单,一般用DIV======================
<div id="Menu1" style="background-color:White; border:1px solid #cccccc; padding:10px;">
<li>打开</li>
<li>打印</li>
<li>回复发件人</li>
<li>全部回复</li>
<li>转发</li>
<li>分配</li>
<li>垃圾邮件</li>
<li>删除</li>
<li>归档此邮件</li>
<li>分拣此邮件</li>
</div>
============================调用方法===============================
var MM = new csMenu(document.getElementById("Table1"), document.getElementById("Menu1"));
其中, document.getElementById("Table1") 就是需要显示菜单的区域控件.
document.getElementById("Menu1") 就是菜单DIV控件.
function csMenu(_object, _menu) { this.IEventHander = null; this.IFrameHander = null; this.IContextMenuHander = null; this.Show = function(_menu) { var e = window.event || event; if (e.button == 2) { if (window.document.all) { this.IContextMenuHander = function(){return false;}; document.attachEvent("oncontextmenu", this.IContextMenuHander); } else { this.IContextMenuHander = document.oncontextmenu; document.oncontextmenu = function(){return false;}; } window.csMenu$Object = this; this.IEventHander = function(){window.csMenu$Object.Hide(_menu);}; if (window.document.all) document.attachEvent("onmousedown", this.IEventHander); else document.addEventListener("mousedown", this.IEventHander, false); _menu.style.left = e.clientX; _menu.style.top = e.clientY; _menu.style.display = ""; if (this.IFrameHander) { var _iframe = document.getElementById(this.IFrameHander); _iframe.style.left = e.clientX; _iframe.style.top = e.clientY; _iframe.style.height = _menu.offsetHeight; _iframe.style.width = _menu.offsetWidth; _iframe.style.display = ""; } } }; this.Hide = function(_menu) { var e = window.event || event; var _element = e.srcElement; do { if (_element == _menu) { return false; } } while ((_element = _element.offsetParent)); if (window.document.all) document.detachEvent("on"+e.type, this.IEventHander); else document.removeEventListener(e.type, this.IEventHander, false); if (this.IFrameHander) { var _iframe = document.getElementById(this.IFrameHander); _iframe.style.display = "none"; } _menu.style.display = "none"; if (window.document.all) document.detachEvent("oncontextmenu", this.IContextMenuHander); else document.oncontextmenu = this.IContextMenuHander; }; this.initialize = function(_object, _menu) { window._csMenu$Object = this; var _eventHander = function(){window._csMenu$Object.Show(_menu);}; _menu.style.position = "absolute"; _menu.style.display = "none"; _menu.style.zIndex = "1000000"; if (window.document.all) { var _iframe = document.createElement('iframe'); document.body.insertBefore(_iframe, document.body.firstChild); _iframe.id = _menu.id + "_iframe"; this.IFrameHander = _iframe.id; _iframe.style.position = "absolute"; _iframe.style.display = "none"; _iframe.style.zIndex = "999999"; _iframe.style.border = "0px"; _iframe.style.height = "0px"; _iframe.style.width = "0px"; _object.attachEvent("onmouseup", _eventHander); } else { _object.addEventListener("mouseup", _eventHander, false); } }; this.initialize(_object, _menu); }
=======================需要显示的菜单,一般用DIV======================
<div id="Menu1" style="background-color:White; border:1px solid #cccccc; padding:10px;">
<li>打开</li>
<li>打印</li>
<li>回复发件人</li>
<li>全部回复</li>
<li>转发</li>
<li>分配</li>
<li>垃圾邮件</li>
<li>删除</li>
<li>归档此邮件</li>
<li>分拣此邮件</li>
</div>
============================调用方法===============================
var MM = new csMenu(document.getElementById("Table1"), document.getElementById("Menu1"));
其中, document.getElementById("Table1") 就是需要显示菜单的区域控件.
document.getElementById("Menu1") 就是菜单DIV控件.
相关文章推荐
- 一个非常简洁高效的JS右键菜单!
- 非常简洁高效的JS右键菜单
- 非常简洁高效的JS右键菜单
- 非常简洁的仿js树形菜单
- js 右键菜单、禁止剪切、复制、粘贴的文本框代码
- js实现的简洁网页滑动tab菜单效果代码
- js实现浏览器右键菜单,屏蔽默认菜单
- JS|CSS压缩工具(更新多线程、增加右键菜单)
- js中禁用右键菜单
- JS 实现右键菜单
- [导入].NET鼠标右键菜单JS[原]
- js禁用页面上右键菜单、选中和复制
- flexigrid.js 右键菜单以及文本框
- js屏蔽鼠标右键菜单
- JS简单实现自定义右键菜单实例
- js禁止页面复制功能禁用页面右键菜单示例代码
- js实现的XP风格的右键菜单
- JS伸缩的菜单 + 右键菜单
- js实现简洁的滑动门菜单(选项卡)效果代码
- 纯css打造最简洁下拉菜单-无js-非常实用