本帖最后由 Clark.Pan 于 2023-2-28 14:57 编辑
SpreadJS中命中测试的功能(hitTest)可以根据 x,y 坐标获取该坐标位置的内容归属(属于表格的区域,行列索引等)。
常被用于获取鼠标点击位置的信息,例如想要获取当前点击位置单元格,对该单元格进行操作。甚至于拖拽内容至指定单元格中这样的需求实现。
方法调用如下:
其中, x与y是传入的坐标,返回一个对象,对象中包含了坐标归属单元格的行/列坐标,类型,所在区域等信息。
但有一点需要注意,这里的 x , y 坐标是相对于SpreadJS的位置坐标,而不是相对于整个网页的位置坐标。
举个例子:x:0,y:0 这个点的位置是SpreadJS表格的左上角,而不是整个网页的左上角。
在实际情况中,SpreadJS容器的位置也并非每次都会从左上角开始排列。经常上方会被系统导航之类的内容占据。这个时候如果通过下面的代码获取x,y坐标就会有问题
- let x = e.pageX
- let y = e.pageY
复制代码 上述代码获取的x,y是相对于整个屏幕的x,y 坐标,这个时候需要减去offsetLeft、offsetTop获取的是固定定位。offsetLeft、offsetTop表示
相对于监听选择器的偏移量,这里可以用spread.getHost()方法获取SpreadJS的dom容器然后再获取其offsetLeft,offsetTop去相减,如下图代码所示:
- let x = e.pageX - spread.getHost().offsetLeft;
- let y = e.pageY - spread.getHost().offsetTop;
复制代码
|
|