2016-01-12 41 views
1

我已经创建了一个图形,并通过拖放将单元格设置到它上面。但是,当发生丢弃或点击时,我无法找到单击的单元格的HTML使用。如何获取maxGraph单元格的内容的ID

例如,我试图获取mxEvent.CLICK内拖动元素的ID。

graph.addListener(mxEvent.CLICK, function(sender, evt){ 

    var cell = evt.properties.cell; 
    // cell.id is the cell id, not an id of html that's inside of it. 
    if(cell) { 

     var outer = cell.value.outerHTML; // I can see the HTML here encoded 

    } 

}) 

更新: 所以我的HTML添加到细胞与value.setAttribute('htmlLabel', label);创建我可拖动的项目时。但htmlLabel似乎并不是evt对象中的任何一个关键字。

回答

1

我一直在使用MxGraph几个月,现在在一个大型项目上,虽然它是一个很棒的库,但在某些领域使用起来有点麻烦。

获取HTML是其中的一个领域。

首先,你需要抓住用“MxGraph”工具集事件的对象,如下所示:

graph.addListener(mxEvent.CLICK, function(sender, event){ 

    var mouseEvent = event.getProperty('event'); 
    var selectedCell = event.getProperty('cell'); 

}); 

正如你已经制定出来,你可以从一开始小区ID选择单元格,通过它的ID属性,但除此之外,该对象上没有其他事物。

要深入下去,您需要深入研究鼠标事件,您也可以获得。

这只是一个普通的HTML事件,因此它有你期望找到的常规属性。

在你的情况

mouseEvent.currentTarget.innerHTML 

会得到你的点击的元素的HTML(您可能需要在调试器来探索不同的道路上,但在最新的Chrome版本肯定对我的作品)

尽管MxGraph使用SVG渲染了它的所有输出,并且据我所知,渲染标签上没有标准的HTML ID属性,实际上没有渲染的图形元素出现在他们身上有ID。

我一个星期前遇到这个问题,当我试图抓住由MxGraph生成的输出来做一些图像处理,并且因为我无法可靠地抓取单个图像,我不得不求助于使用Base64编码的字符串和使用MxGraph的API操纵单元格样式表。

+0

感谢您的支持! – BenRacicot

+0

任何时间。如果它帮助某人跳过了我花了很多时间去解决问题,那就值得:-) – shawty

相关问题