`
mhf_csu
  • 浏览: 20609 次
  • 性别: Icon_minigender_1
  • 来自: 南宁
社区版块
存档分类

给ECharts添加右键点击事件,实现右键功能菜单

阅读更多

 

 由于项目的需要,使用ECharts 的力导向图来实现 整个EDW数据架构的血缘分析,由于ECharts并没有给组件定义有右键的事件,同时ECharts是开源的项目,所以研究了下源码,将ECharts2.2.2 的echarts.js给修改了一番。将过程描述如下,后面提供修改后的echarts.js下载,欢迎使用!

 

先说明一下,js获得右键事件大概从下面两个事件考虑:

1、onmousedown:通过判断e.button = '2' 时,响应右键事件。

2、oncontextmenu:通过先屏蔽默认的右键菜单事件,再给需要响应右键菜单的组件加上contextmenu的响应。

 

第一种,我先实现了,但是ECharts的组件定以有click事件和鼠标拖动事件,所以在mousedown的时候又触发多个事件,这样做起来,页面在快速点击测试的时候,总是感觉反映迟钝,甚至造成部分不响应。所以最后选了第二种做法:

 

新增'CONTEXTMENU'事件:

 var ZR_EVENT_LISTENS = [
        'CLICK',
        'DBLCLICK',
        'CONTEXTMENU',
        'MOUSEOVER',
        'MOUSEOUT',
        'DRAGSTART',
        'DRAGEND',
        'DRAGENTER',
        'DRAGOVER',
        'DRAGLEAVE',
        'DROP'
    ];

 

_oncontextmenu: function (param) {
	//if(arguments[0].event.button == '2'){
	//	callChartListMethodReverse(this, 'onmousedown', param);
		if (param.target) {
			var ecData = this._eventPackage(param.target);
			if (ecData && ecData.seriesIndex != null) {
				this._messageCenter.dispatch(ecConfig.EVENT.CONTEXTMENU, param.event, ecData, this);
			}
		}
	//}
},

 修改ECharts源码的其他地方就不特别指出了,有兴趣查看修改后的源码。

 

    现在对界面文件进行些说明,下面模拟了些血缘分析的静态数据(项目是从后台查出的,这里就只能随便模拟一些数据看效果了),准备一个div,用来定义右键菜单:

<div id="menuuu"  onMouseLeave ="this.style.display = 'none';">
		<ul><!--右键弹出菜单-->		
			<li id="menu_blood" onClick="alert('血缘分析');" onMouseOver="this.style.background = '#999999';" onMouseOut="this.style.background = '#CCCCCC';">
				<img src="menu_blood.png" /><font>血缘分析</font>
			</li>
			<li id="menu_influence" onClick="alert('影响分析');" onMouseOver="this.style.background = '#999999';" onMouseOut="this.style.background = '#CCCCCC';">
				<img src="menu_influence.png" /><font>影响分析</font>
			</li>
		</ul>
	</div>

 引入修改后的echarts:

<script src="../echarts-2.2.2/echarts-2.2.2/build/dist/echarts_mhf.js"></script>

 申明使用到右键菜单事件:

function rightBt(param){
	var menu = document.getElementById("menuuu");
	var event = param.event;
	var pageX = event.pageX;
	var pageY = event.pageY;
	menu.style.left = pageX + 'px';
	menu.style.top = pageY + 'px';
	menu.style.display = "block";
}
							
//myChart.on(ecConfig.EVENT.CLICK, focus);
//myChart.on(ecConfig.EVENT.MOUSEDOWN, rightBt);
myChart.on(ecConfig.EVENT.CONTEXTMENU, rightBt);

 好了差不多了,看效果图:

 



 

附件里提供修改后的echarts_mhf.js 下载,注意:

\build\dist\echarts_mhf.js  是压缩后的,项目开发时使用

\build\source\echarts_mhf.js 是未压缩的,供查看源码使用

  • 大小: 120.7 KB
7
2
分享到:
评论
1 楼 贪眼星 2018-01-22  
有用,谢谢博主

相关推荐

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

    在ECharts中,用户可以通过自定义交互行为来增强图表的功能,例如添加右键菜单,以实现更多的操作选项。 标题“echarts右键菜单实例 --- 不修改源码”表明我们将探讨如何在ECharts图表上添加右键菜单,而无需直接...

    能响应鼠标右键事件的ECharts2.2

    能响应鼠标右键事件的ECharts2.2。 有使用demo,直接打开html看效果,详细的使用方法,请看下面链接: http://mhf-csu.iteye.com/blog/2223804 血缘分析 ECharts2.2 右键菜单。

    echarts组织结构图及自定义右键菜单

    ECharts本身并不直接提供右键菜单的功能,但你可以通过监听鼠标事件来实现这一功能。在ECharts实例上注册`oncontextmenu`事件,当用户在图表上右击时,这个事件会被触发。然后,你可以弹出一个自定义的菜单,提供一...

    【JavaScript源代码】vue添加自定义右键菜单的完整实例.docx

    在JavaScript中,右键菜单通常是通过原生浏览器事件来实现的,而在Vue中,我们可以通过监听原生事件或使用第三方插件来创建自定义的右键菜单。以下是使用Vue实现自定义右键菜单的详细步骤: 1. **事件监听**: 在...

    Echarts-all,修改了源码,添加鼠标右键监听

    百度Echarts文件,修改源码,添加了鼠标右键事件。 调用方式与其他官方方法一样。 实例:myChart.on(ecConfig.CONTEXTMENU, myfunction); (CONTEXTMENU为右键事件名称) ,(myfunction为自定义事件) function ...

    Echarts地图省级联动,动态加载数据,右键返回,并附有省市json地图。

    在这个项目中,我们关注的是Echarts的地图功能,特别是省级联动和动态加载数据的实现,同时还有右键菜单功能的添加。 一、Echarts地图省级联动 省级联动是指在Echarts地图中,当用户点击或选择一个省份时,地图会...

    自定义右键菜单效果

    实现自定义右键菜单效果,需要理解JavaScript事件处理、DOM操作以及CSS布局等核心概念。开发者需要考虑菜单的可访问性、响应式设计,以确保在不同的设备和屏幕尺寸上都能正常工作。同时,还需要注意性能优化,避免因...

    3种不同的ContextMenu右键菜单演示.

    在计算机用户界面设计中,右键菜单(通常称为ContextMenu)是一种常见的交互元素,它为用户提供了一种快捷方式来访问特定的操作或功能。本教程将详细讲解三种不同的ContextMenu实现方法,帮助开发者更好地理解和应用...

    鼠标右键,键盘控制左右移动echarts标记线、标记点

    在本文中,我们将深入探讨如何使用ECharts,一个流行的JavaScript数据可视化库,来实现鼠标右键功能以及通过键盘控制ECharts中的标记线(markLine)和标记点(marker)。ECharts提供了一套丰富的API和交互功能,使得...

    右键显示隐藏菜单

    这很可能是一个注册表脚本,用于添加或修改注册表项以显示额外的右键菜单选项。注册表编辑器(RegEdit)是Windows内置的工具,用于查看和编辑注册表。使用这样的注册表脚本需谨慎,因为错误的操作可能导致系统不稳定...

    Echarts 实现树状图的展示与编辑示例

    echarts 实现树形图 的...非常详细的操作,包含右键菜单的实现功能。 如果需要更详细的使用支持,可以私信咨询小编或者评论区留言,小编会在第一时间及时回复。 感觉对您有所帮助的话,还请帮小编点赞收藏加关注哦。

    鼠标右键在页面上打点

    实现这一功能通常需要JavaScript编程,通过监听鼠标的右键点击事件,配合DOM操作来添加、删除或修改页面上的元素。 3. **JavaScript事件处理**: 在JavaScript中,我们可以使用`addEventListener`方法来监听鼠标的...

    vue2.0的contextmenu右键弹出菜单的实例代码

    整理文档,搜刮出一个vue2.0的contextmenu右键弹出菜单的实例代码,稍微整理精简一下做下分享。 1.事情对象 &lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;&lt;/title&gt; &lt;meta charset="utf...

    echarts省市区离线地图

    1. `contextmenuMap.html` 和 `dblClickMap.html` 可能是两个示例页面,分别演示了如何在地图上添加右键菜单和双击事件的处理。在ECharts中,可以通过监听`contextmenu`和`dblclick`事件,自定义地图的交互行为。 2....

    echarts离线显示全国和广东省市级图像

    “主要采用单击进入下级地图,双击或者右键点击“返回上一级”地图”这部分描述揭示了交互设计,用户可以通过单击地图上的某个区域进入下一级别(如从省级到市级),而双击或右键菜单则提供了返回上级地图的功能,...

    ArcMap+echarts+java地图报表

    3. **连接到“huizhou”文件夹**:在ArcCatalog中,可以通过右键点击文件夹并选择“连接到文件夹”来实现这一点。 接下来,需要将特定的地图文件移至该文件夹中。 ##### 下载地图文件 - **下载广东省(SHP格式)....

    嵌入WebBrowser控件demo

    总的来说,这个项目提供了一个全面的实例,教开发者如何在C++应用中集成和定制WebBrowser控件,实现包括但不限于显示HTML内容、自定义右键菜单和处理JavaScript事件等功能。这对于开发桌面应用,尤其是那些需要内建...

    网页中嵌套google地图(功能很强大)

    在"google地图有右键菜单.html"文件中,可能实现了通过监听鼠标右键点击事件,显示自定义的菜单项,比如获取当前位置、导航等。 值得注意的是,Google地图API还有许多高级特性,如实时交通信息、卫星图像、街景视图...

    echarts.min.js

    铜仁市3D地图(点击地图区域跳转到相应页面)&lt;/title&gt; [removed][removed] [removed][removed] [removed][removed] &lt;/head&gt; &lt;body&gt; &lt;!-- 3D地图容器 --&gt; ; height: 800px;"&gt; ...

Global site tag (gtag.js) - Google Analytics