`
trace
  • 浏览: 124331 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

利用YUI创建简单的右键菜单

阅读更多
 在页面上实现右键菜单(ContextMenu),效果明显,用途广泛,并且,利用YUI,实现起来也不复杂。我参考了YUI的文档之后,设计了一个简单的实现右键菜单的页面。

       首先,看一看没有写js的页面代码:

  1. <html xmlns="http://www.w3.org/1999/xhtml">  
  2. <head>  
  3. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />  
  4. <title>ContextMenuTest</title>  
  5.   
  6. <!-- CSS for Menu -->  
  7. <!--具体链接需自己修改-->  
  8. <link rel="stylesheet" type="text/css" href="../javascripts/yui/menu/assets/skins/sam/menu.css">  
  9.   
  10. <style type="text/css">  
  11. #Workbench {  
  12.     position:absolute;  
  13.     left:124px;  
  14.     top:57px;  
  15.     width:597px;  
  16.     height:278px;  
  17.     z-index:1;  
  18.     border:#0000FF solid 1px;  
  19. }  
  20. #TestContextMenu {  
  21.     position:relative;  
  22.     width:400px;  
  23.     height:100px;  
  24.     border:#FF0000 solid 1px;  
  25.     left: 10px;  
  26.     top: 10px;  
  27.     background-color:#99CC00;  
  28. }  
  29. body {  
  30.     font-size: 13px;  
  31. }
  32. </style>  
  33. </head>  
  34.   
  35. <body class="yui-skin-sam">  
  36.     <div id="Workbench">  
  37.         <div id="TestContextMenu"></div>  
  38.     </div>  
  39. </body>  
  40. </html>  

可以看到,只有两个div和一些CSS样式。下面,开始写js,首先,导入一些要用到的js文件:

  1. <!--具体链接需自己修改-->  
  2. <!-- Namespace source file -->  
  3. <script type="text/javascript" src="../javascripts/yui/yahoo/yahoo.js"></script>  
  4.   
  5. <!-- Dependency source files -->  
  6. <script type="text/javascript" src="../javascripts/yui/event/event.js"></script>  
  7. <script type="text/javascript" src="../javascripts/yui/dom/dom.js"></script>  
  8. <script type="text/javascript" src="../javascripts/yui/animation/animation.js"></script>  
  9.   
  10. <!-- Container source file -->  
  11. <script type="text/javascript" src="../javascripts/yui/container/container_core.js"></script>  
  12.   
  13. <!-- Menu source file -->  
  14. <script type="text/javascript" src="../javascripts/yui/menu/menu.js"></script>  

在这个页面中,可能不会用到上面所有的文件,但都写在这了。
       接着,编写页面中的js脚本。先设计一个函数,并让页面加载完成后调用它:

  1. YAHOO.example.testContextMenu_init = function(p_sType) {  
  2.     // 当载入了yahoo.js之后,就自动产生了YAHOO.example这个名称空间。  
  3.     // p_sType 目前还不知道是干什么用的,只是照抄文档上的。  
  4. }  
  5. YAHOO.util.Event.addListener(window, "load", YAHOO.example.testContextMenu_init);  

这样就完成了这个功能。接下来,就该写这个函数里面的内容了。首先,产生一个ContextMenu对象:

  1. var target = document.getElementById("TestContextMenu");  
  2.   
  3. var aMenuItems = [  
  4.   
  5.            { text: "编辑", helptext: "Shift + E" },   
  6.            { text: "复制", helptext: "Shift + C" },   
  7.            { text: "删除", helptext: "Shift + D" }  
  8.           
  9.    ];  
  10.   
  11. var aContextMenu = new YAHOO.widget.ContextMenu(  
  12.   
  13.             "myContextMenu",   
  14.             {  
  15.                  trigger: target,  
  16.                  itemdata: aMenuItems,  
  17.                  lazyload: true,  
  18.                  effect: {   
  19.                      effect:YAHOO.widget.ContainerEffect.FADE,  
  20.                      duration:0.1  
  21.                  }                                                   
  22.              }   
  23.             
  24.     ); 

其中的target就是需要响应右键菜单的区域。aMenuItems是菜单项,aContextMenu就是构造的ContextMenu函数。

       接着,设计一些事件响应函数:

  1. function onContextMenuClick(p_sType, p_aArgs) {  
  2.   
  3.     var oItem = p_aArgs[1]  
  4.       
  5.     if(oItem) {  
  6.       
  7.         switch(oItem.index) {  
  8.           
  9.             case 0:  
  10.                 alert("This is the first Item")  
  11.             break;  
  12.               
  13.             case 1:  
  14.                 alert(oItem)  
  15.             break;  
  16.               
  17.             case 2:  
  18.                 alert(p_aArgs[1])     
  19.             break;  
  20.               
  21.         }  
  22.           
  23.     }  
  24.       
  25. }  
  26.                                       
  27. function onContextMenuRender(p_sType, p_aArgs) {  
  28.      
  29.        this.clickEvent.subscribe(onContextMenuClick);  
  30.                  
  31.    }  
  32.               
  33. aContextMenu.renderEvent.subscribe(onContextMenuRender);  

这里的函数布置顺序也是一般的事件注册顺序。现在,就可以跑跑看了。

       ps:在YUI的文档中,有一个GetListItemFromEventTarget()函数,可以从触发右键菜单的元素开始向上追溯到指定的父元素,在一般的页面设计中,都是用得到的。另外,菜单的自定义CSS,也可参考YUI的Menu文档
分享到:
评论

相关推荐

    YUIcompressor右键菜单

    `yuimemu.reg` 文件的作用是向用户的注册表添加条目,这样就能在文件资源管理器的右键菜单中创建一个新的选项,让用户可以直接调用`yuimemu.cmd` 来运行`YUIcompressor`。使用这个脚本需要谨慎,因为错误的操作可能...

    yuicompressor,给YUI Compressor添加右键命令

    可惜官网提供的版本都不具备右键功能,每次压缩都要cmd输入一些命令实在是繁琐,本文就介绍如何给YUI Compressor添加右键命令,方便使用。 网上已有一些网友写好的安装包,但对应的版本太低,目前最新最多人使用的...

    YUI compressor右键压缩脚本

    在下载并解压缩文件后,运行"install.cmd"安装脚本,这将把YUI Compressor的功能集成到你的文件资源管理器的右键菜单中。这意味着当你需要压缩一个JS或CSS文件时,只需在文件上右击,选择相应选项,脚本就会自动调用...

    YUI 入门教程YUI 入门教程YUI 入门教程

    `document.cookie`用于管理Cookie,`document.oncontextmenu`处理右键菜单事件,`document.createElement`创建新的DOM元素,`document.elementFromPoint`则可以根据鼠标位置找到对应的元素。 YUI的事件系统强大且...

    YUI.rar_html_javascript YUI_yui_yui javascript

    3. **下拉菜单**:YUI的Menu组件可以轻松创建多级下拉菜单,提升网站导航的用户体验。 4. **拖放功能**:YUI的Drag & Drop模块支持元素的拖放操作,适用于创建可交互的布局或组织工具。 5. **数据表格**:YUI的...

    yui下载下来就可直接使用不用配置,已配置好了

    3. `yuicompressor.reg`:这可能是一个注册表文件,用于在Windows系统中添加YUI Compressor到右键菜单,方便用户快速压缩文件。用户只需导入此注册表项,就能在文件或文件夹上右键点击并选择“使用YUI Compressor...

    自己写的 YUI 脚本JS+CSS 代码压缩 的批处理

    在JS或CSS文件的右键菜单里,你能找到“[YUI 压缩]”,你可以使用它直接对脚本压缩。 为了方便识别哪个是压缩的那个是原始代码,你可以将源文件文件名命名为“文件名.source.扩展名”的形式,批处理程序会自动生成...

    为jQuery-easyui的tab组件添加右键菜单功能的简单实例

    加入了右击TAB选项卡时显示关闭的上下文菜单 具体实现代码: 右键菜单 HTML: 关闭 全部关闭 除此之外全部关闭 &lt;div class=menu-sep&gt;&lt;/div&gt; 当前页右侧全部关闭&lt;

    YUI3.6文档及示例

    YUI(Yahoo! User Interface Library)是雅虎公司推出的一款开源JavaScript库,旨在帮助开发者构建高性能、可扩展的Web...通过深入研究这个包,你将能够利用YUI的强大功能,创建出高效、美观且用户体验优秀的Web应用。

    yui.rar 例子

    例如,例子中可能用到了“yui-button”来创建交互式的按钮,或者使用“yui-menu”构建导航菜单,这些组件大大简化了开发工作,提升了用户体验。 在实际开发中,YUI的调试工具也非常实用。YUI Logger可以帮助开发者...

    yui3-master.zip

    《深入理解YUI3:基于yui3-master.zip的探讨》 YUI(Yahoo! User Interface Library)是由雅虎公司开发的一套开源JavaScript库,它为Web开发者提供了丰富的功能和工具,以创建交互性强、性能优秀的网页应用。YUI3是...

    YUI-EXT使用详解

    YUI-EXT提供了许多高级组件,如表格、菜单、窗口、表单、布局管理器等,极大地丰富了YUI的功能,使得开发者能够更加便捷地创建具有复杂交互性的Web应用。 YUI本身是一个开源的JavaScript库,由Yahoo开发,旨在简化...

    利用yuicompressor来对js、css文件压缩

    这将会创建一个新的压缩后的CSS文件"compressed_style.css"。 3. **JavaScript压缩**:对于JavaScript文件,只需将.css替换为.js即可。例如,`java -jar yuicompressor.jar script.js -o compressed_script.js`。 ...

    yui 资源包

    在3.9.0 r2这个版本中,YUI提供了丰富的组件和工具,帮助开发者创建高效、可维护且用户体验优良的Web应用。 一、YUI的核心特性 1. **模块化**:YUI采用AMD(Asynchronous Module Definition)模块加载机制,允许...

    yui_2.9.0前端UI

    YUI 库,全称Yahoo! UI Library。是一组工具和控件,用JavaScript写成, 为的是用DOM 脚本,DHTML和AJAX等...YUI 项目包括YUI 库和两个创建时工具: YUI Compressor (压缩) 和 YUI Doc (JavaScripts代码的文档引擎)。

    YUI3.7.3 最新版本 带API

    2. **事件处理**:YUI3提供了强大的事件系统,支持DOM事件、自定义事件以及事件委托,使得监听和响应各种用户交互变得简单。 3. **CSS样式工具**:YUI3包含了一套CSS工具,如样式类名管理器(YUI.addClass, YUI....

    《YUI使用文档》汉语版的yui学习材料

    例如,YUI会自动创建`widget`, `util`, `example`等基础命名空间,开发者可以自由扩展。 接着,`lang`模块提供了JavaScript语言工具。其中,`lang.extend`用于实现对象间的继承,不同于传统的面向对象编程,它不会...

    【YUI组件】基于YUI的表单验证器

    YUI是一个开源的JavaScript库,它包含了丰富的工具和组件,用于创建交互式、高性能的Web应用。这个表单验证器是YUI库中的一个关键部分,用于确保用户在提交表单时输入的数据符合预设的规则和格式,从而提高数据质量...

    yuicompressor-2.4.8.jar

    《yuicompressor-2.4.8.jar:前端优化与代码压缩的艺术》 ...在Idea这样的集成开发环境中,我们可以方便地利用yuicompressor进行代码压缩,提升开发效率。掌握yuicompressor的使用,无疑是提升前端开发能力的重要一环。

    yui_3.0.0(雅虎官方)

    此外,利用YUI提供的调试工具进行代码优化,确保应用性能。 总之,YUI 3.0.0作为雅虎官方的JavaScript库,以其全面的功能、高效的性能和良好的社区支持,成为前端开发者不可或缺的工具之一。对于希望提升Web开发...

Global site tag (gtag.js) - Google Analytics