`

JavaScript实现右键菜单(一)

阅读更多
  JavaScript实现右键菜单(一) 收藏
效果:



javascript实现右键菜单的方式很多,思路也各有千秋,在介绍代码之前先简单介绍一下我的右键对象思路。

1、 一个右键对象包含多个右键块。

2、 任何一个页面或控件都能且最多只能挂一个右键块。

3、 每个右键块拥有多级右键项。

4、 采用pupop方式。

下面分对象介绍源码:

公共部分:

/**
* <p>标题: BinaryStar右键菜单JS模型</p>
* <p>功能描述: 模拟右键菜单的功能。</p>
* <p>实现方法: 一个右键菜单对象由多个右键菜单块组成。每个需要右键功能的对象直接关联一个菜单块,
*  同时一个菜单块可以配多个对象关联。
* 每个菜单块包含多个菜单项。每个菜单项可能包含多个子菜单项。
* <p>作者: BinaryStar原创B/S框架</p>
* <p>版本: 0.1</p>
* <p>创建日期: 2005-12-21</p>
*/

/**
* <p>标题: BSRightItemArea</p>
* <p>功能描述: 右键菜单块。</p>
* <p>作者: BinaryStar原创B/S框架</p>
* <p>版本: 0.1</p>
* <p>创建日期: 2005-12-21</p>
*/


var bs_rm_div = "BACKGROUND-COLOR: #efefef;BORDER-BOTTOM: #ffffff 1px outset;border-LEFT: #ffffff 1px outset;border-RIGHT: #ffffff 1px outset;border-TOP: #ffffff 1px outset;FILTER: Alpha(Opacity='95');position:absolute;";
var bs_rm_info_td = "FONT-SIZE: 14px;color:#FFFFFF;font-family:@Tahoma,@宋体;width:20px;layout-flow:vertical-ideographic;";
var bs_rm_info = "position:absolute;top:1px;Height:20px;overflow:hidden;cursor:default;";
var bs_rm_over = "BACKGROUND-COLOR: #8989bc;COLOR: #ffffff;CURSOR: default;FONT-SIZE: 12px;word-break:keep-all;white-space:nowrap;";
var bs_rm_out = "BACKGROUND-COLOR: #efefef;COLOR: #000000;FONT-SIZE: 12px;word-break:keep-all;white-space:nowrap;";
var bs_rm_sperator = "BORDER-BOTTOM: #ffffff 1px inset;border-LEFT: #ffffff 1px inset;border-RIGHT: #ffffff 1px inset;border-TOP: #ffffff 1px inset;width: 95%;";
var bs_rm_error = "TEXT-DECORATION: none;CURSOR: default;FONT-SIZE: 12px;FONT-FAMILY: 宋体;background-color:red;color:window;"

BSRightItemArea


function BSRightItemArea(pid, index, text)...{
  this.pid = pid||"BSRightMenu_1";//ID
  this.index = index;
  this.id = this.pid + "_ItemArea_" + this.index;//ID
  this.leftText = text||"BS 制作";//左边显示的文字
  this.itemList = new Array();//右键菜单集合
  this.thisItemIndex = -1;
  this.mouseType = 2; //激发的鼠标方式,缺省为右键
  this.preShowFun = "";//激发右键块前的附加方法

  //添加一个右键根菜项
  this.addRootItem = function (text, jsfun, img, disabled)...{
    return this.addItem(-1, text, jsfun, img, disabled);
  }

  //添加一个右键菜项
  this.addItem = function (pIndex, text, jsfun, img, disabled)...{
    var newItem = new BSRightItem(this.pid, this.index, this.id, pIndex, this.itemList.length, text, jsfun, img, disabled);
    if (text.Trim() == "-" || text.Trim() == "" || text.Trim() == "sperator")...{
      newItem.isSperator = true;
    }
    //设置父节点的子项目
    if (pIndex >= 0)...{
      var pobj = eval(this.pid);
      this.itemList[pIndex].childList.length++;
      this.itemList[pIndex].childList[this.itemList[pIndex].childList.length-1] = newItem.index;
      newItem.level = this.itemList[pIndex].level+1;
      pobj.setMaxLevel(newItem.level);
    }
    this.itemList.length++;
    this.itemList[this.itemList.length-1] = newItem;
    return newItem;
  }

  //菜单项块的展现
  this.show = function()...{
    var htmlStr = "<table border='0' cellspacing='0'>";
    htmlStr += "<tr><td valign="top"  bgcolor="#000000" onclick="event.cancelBubble=true;" style=""+bs_rm_info_td+""><nobr><div style=""+bs_rm_info+"" onselectstart="window.event.returnValue=false;">"+this.leftText+"</div></nobr>";
    htmlStr += "</td><td style='padding: 1' valign='bottom'>";
    htmlStr += "<table width='100%' border='0' cellspacing='0'>";
    for (var i=0; i<this.itemList.length; i++)...{
      if (this.itemList[i].pIndex < 0)...{
        htmlStr += this.itemList[i].show();
      }
    }
    htmlStr += "</table></td></tr></table>";
    return htmlStr;
  }

  //设置选中的菜单项
  this.setIndexItem = function (level, thisIndex)...{
   var isSelf = false;
    var pobj = eval(this.pid);
    var thisLevelItem = -1;
    var selectObj = pobj.popupList[level].document.getElementById(pobj.id+"_selectItem");
    if (selectObj != null)...{
     thisLevelItem = selectObj.value;
    if (thisIndex == thisLevelItem && thisLevelItem>=0)...{
     if (this.itemList[thisIndex].childList.length > 0)...{
     this.itemList[thisIndex].childIsShow = true;
     }
     isSelf = true;
    }
    else if (thisLevelItem >= 0)...{
       var thisDiv = pobj.popupList[level].document.getElementById(this.itemList[thisLevelItem].id+"_tr");
       if (thisDiv != null)...{
         this.itemList[thisLevelItem].setImgSelect(thisDiv, false);
     this.itemList[thisLevelItem].childIsShow = false;
      }
    }
    selectObj.value = thisIndex;
     this.thisItemIndex = thisIndex;
    }
    return isSelf;
  }
}


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/mynickel2000/archive/2006/09/12/1214608.aspx
分享到:
评论

相关推荐

    JavaScript实现鼠标右键菜单

    该文件是一个实现比较好的鼠标右键菜单。 实现方案为JavaScript。值得学习

    javascript实现右键菜单,兼容IE,火狐

    JavaScript 是一种广泛使用的客户端脚本语言,它允许我们动态地操控网页元素,包括实现自定义的右键菜单功能。这篇文章将详细介绍如何使用 JavaScript 实现一个兼容 IE 和火狐浏览器的右键菜单。 首先,我们需要...

    右键菜单(javaScript)

    在标签“右键菜单”中,我们可以推测这个压缩包可能包含一个简单的示例或者教程,用于展示如何用JavaScript实现这样的功能。文件名“右键菜单.html”表明这可能是一个HTML文件,其中包含了JavaScript代码来实现右键...

    js(javascript)右键菜单实现

    js(javascript)右键菜单实现,js(javascript)右键菜单实现,js(javascript)右键菜单实现

    jQuery实现右键菜单源码

    本篇文章将深入探讨如何使用jQuery来实现一个右键菜单功能,这在许多交互式网页应用中是非常常见的需求。 首先,理解jQuery的核心概念是至关重要的。jQuery对象通过$()函数创建,它可以用来选择DOM元素、操作DOM、...

    js右键菜单,菜单项由js动态添加,纯js调用

    总结,使用JavaScript实现右键菜单并动态添加菜单项是一项常见的前端任务。通过监听`contextmenu`事件,结合`createElement`方法创建DOM元素,可以构建出功能丰富的右键菜单。同时,注意处理不同浏览器的兼容性问题...

    HTML实现右键菜单

    总的来说,实现HTML右键菜单需要结合HTML、CSS和JavaScript,特别是利用jQuery的便利性,来实现用户友好的交互效果。文件名“右键菜单”和“context”可能对应的就是这个过程中的HTML结构和JavaScript代码示例。通过...

    JavaScript设置右键菜单

    通过以上这些知识点,我们可以构建出一个功能丰富的JavaScript右键菜单系统,不仅可以提供个性化的用户体验,还可以根据业务需求添加更多功能,如复制、粘贴、保存等。在实际项目中,可以结合其他前端框架(如React...

    echarts右键菜单实例 --- 不修改源码

    通过以上步骤,我们就能够在ECharts图表上实现一个自定义的右键菜单,而无需修改ECharts的源代码。这种方式允许我们充分利用ECharts的灵活性和强大的API,同时保持代码的简洁和可维护性。 在提供的压缩包文件 ...

    Web右键菜单 很不错的右键菜单

    综上所述,"Web右键菜单 很不错的右键菜单"可能是一个致力于提升用户体验的Web开发实践,通过JavaScript、CSS和HTML技术实现自定义功能,同时兼顾了易用性、扩展性和性能优化。通过深入理解和应用这些技术,开发者...

    javascript 右键菜单

    JavaScript 右键菜单是一种常见的网页交互功能,它允许用户在网页元素上点击鼠标右键时弹出自定义的上下文菜单。这样的功能可以提供额外的操作选项,增强用户体验。本教程将深入探讨如何使用 JavaScript 实现这一...

    js树形菜单加右键菜单

    总的来说,结合使用JavaScript实现的树形菜单和右键菜单,可以提供一个高效且直观的用户界面,让用户在复杂的层级数据中进行导航和操作。这种技术在内容管理系统(CMS)、文件管理工具以及其他需要展现层次关系的Web...

    好看的javascript网页鼠标右键菜单

    在这个特定的案例中,"好看的javascript网页鼠标右键菜单"是利用JavaScript实现的一种增强用户界面的技巧。通常,网页上的鼠标右键点击事件会被浏览器默认的上下文菜单所捕获,但通过自定义JavaScript代码,我们可以...

    基于Bootstrap外观的JavaScript右键菜单插件

    这次我们要分享的也是一款JavaScript右键菜单插件,它的外观是基于Bootstrap的,因此UI比之前那款要漂亮许多,另外这款右键菜单插件也支持自定义区域菜单显示功能,你可以在初始化的时候指定需要弹出菜单的网页区域...

    Openlayers扩展右键菜单

    在提供的`ol3-contextmenu-master`压缩包中,很可能是包含了一个已经实现的OpenLayers右键菜单扩展。这个扩展可能包含了上述所有步骤的实现,包括事件监听、菜单构建、样式和功能逻辑。开发者可以通过阅读源代码学习...

    HTML+javaScript右键菜单

    在HTML+JavaScript右键菜单的实现中,JSP可能被用作后端服务,处理与菜单相关的数据请求或逻辑,例如根据用户状态或权限动态生成菜单项。 实现步骤如下: 1. 创建HTML结构:在HTML文件中,定义一个用于存放菜单的...

    禁止鼠标右键及svg中自定义右键菜单

    本文将深入探讨如何实现这一功能,并且关注于在SVG(可缩放矢量图形)中自定义右键菜单。 首先,我们要理解为何要禁止鼠标右键。在网页上,鼠标右键通常会弹出一个包含诸如“查看源代码”、“保存图片”等选项的...

    网页右键菜单封装类 实现web右点击菜单

    总的来说,"网页右键菜单封装类 实现web右点击菜单"这个话题涵盖了JavaScript事件处理、DOM操作、HTML结构设计、CSS样式编写以及代码封装和复用等多个方面,是Web前端开发中的一个重要实践。通过学习和掌握这些知识...

    Js右键菜单,js菜单,漂亮的Js右键导航,好用的Js右键菜单

    一、JavaScript右键菜单的基本原理 在网页上,右键点击事件通常是浏览器默认行为的一部分,如选择文字或打开上下文菜单。然而,通过JavaScript,我们可以自定义这个行为,创建一个完全符合我们设计需求的右键菜单。...

    实现右键菜单编辑功能treeview控件

    总之,实现右键菜单编辑功能的TreeView控件需要结合前端和后端的技术,通过JavaScript捕捉和处理用户的右键点击,再通过AJAX与服务器端进行通信,完成数据的编辑和保存。这个过程涉及了事件处理、DOM操作、AJAX通信...

Global site tag (gtag.js) - Google Analytics