如何触发对可动手操作的行/单元格的点击?
Posted
技术标签:
【中文标题】如何触发对可动手操作的行/单元格的点击?【英文标题】:How to trigger a click on a handsontable row/cell? 【发布时间】:2020-08-03 02:43:37 【问题描述】:我设置了一个 afterOnCellMouseDown 事件,单击单元格后我需要做很多事情。
我想知道是否有办法在handsontable 中触发单元格上的点击事件?
我知道有一种方法可以选择一行或一列,但我特别需要触发一个点击事件,以便触发我的 afterOnCellMouseDown。
有什么想法吗?
谢谢!
【问题讨论】:
我不确定。什么事件会触发点击事件?你能举个例子吗? 这是我在 Github 上打开的一个线程,如果它将来有用的话。 github.com/handsontable/handsontable/issues/6822 @KBell - 感谢您的联系 - 这应该是我尝试联系的演示 jsfiddle.net/vr29a1fh 【参考方案1】:Handsontable 团队的 Piotr 帮助我解决了这个问题。 他准备了演示 这是一个链接 - https://jsfiddle.net/mfhqz69L/
你需要知道handsontable不能监听click,因为click是在完整的click动作发生后触发的;也就是说,当指针保持在同一元素内时,按下并释放鼠标按钮。 mousedown 在最初按下按钮的那一刻被触发。 这是完整文档的链接 - https://developer.mozilla.org/en-US/docs/Web/API/Element/mousedown_event
var hot = new Handsontable(hotElement, hotSettings);
function triggerMouseEvent(type, target)
const event = document.createEvent('MouseEvent');
event.initMouseEvent('mousedown', true, true, window, 0, 0, 0, 80, 20, false, false, false, false, 0, null);
target.dispatchEvent(event);
var hotCell = hot.getCell(0, 0);
triggerMouseEvent('mousedown', hotCell);
【讨论】:
我正在使用 Selenium Webdriver 测试一个页面 - 并且必须能够点击一个可动手操作的行。上面的代码是解决方案的一半:我需要在 'mousedown' 之后直接添加一个 'mouseup' 事件以有效地执行完全点击,因为某些依赖于点击事件的 javascript 永远不会被触发。【参考方案2】:我不确定这是否是您正在寻找的,但这就是我正在做的事情。它非常适合我的需求。
afterOnCellMouseDown: function(event, coords)
if(coords.col == 18) // Column 18 of my table
let $id = hot.getDataAtCell(coords.row, 0); // row number and column number
//console.log($id); // testing the results
let $details = getOrderDetails($id); // function to pull in data to another section of the DOM
else
clearDetailInformation(); // functions to clear a few sections of the DOM
// end if
hot.selectRows(coords.row); // puts a border around the clicked ROW
// end afterOnCellMouseDown
【讨论】:
以上是关于如何触发对可动手操作的行/单元格的点击?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 iOS 的 didselectrowatindexpath 中触发按钮操作方法,目标 c