博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
给ECharts添加右键点击事件,实现右键功能菜单
阅读量:5736 次
发布时间:2019-06-18

本文共 2001 字,大约阅读时间需要 6 分钟。

由于项目的需要,使用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,用来定义右键菜单:

 

  1. <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);

 

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

 

 

转http://mhf-csu.iteye.com/blog/2223804

代码路径

http://download.csdn.net/detail/mhf_csu/8862597

转载地址:http://ojgwx.baihongyu.com/

你可能感兴趣的文章
mysql方言 MyISAM 和 InnoDB区别
查看>>
生产环境MySQL快速备份工具XtraBackup使用案例
查看>>
Spring cache简单使用
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
Ubuntu下sublime-text3安装步骤
查看>>
autorelease 和垃圾回收制(gc)的区别
查看>>
大型网站技术架构(八)网站的安全架构
查看>>
C++中的基础
查看>>
AJAX
查看>>
BitTorrent Sync
查看>>
tomcat集群session复制
查看>>
get和post
查看>>
国庆节游嵩山
查看>>
phantomjs 的缓存
查看>>
安装emulator
查看>>
NAS上创建 iSCSI并挂载
查看>>
云时代,你离专业企业移动工作平台之间,还差什么—Cnskype
查看>>
【深入Cocos2d-x】使用MVC架构搭建游戏Four
查看>>
前端jsp页面script引入url项目名使用${appName}
查看>>