找回密码
 立即注册

QQ登录

只需一步,快速开始

spencer

注册会员

9

主题

24

帖子

85

积分

注册会员

积分
85
spencer
注册会员   /  发表于:2021-7-16 08:57  /   查看:2468  /  回复:1
1金币
本帖最后由 spencer 于 2021-7-16 08:57 编辑

在使用拖拽代码示例用于实际项目中时,SpreadJS放在Frame框架页中,
var offsetL = document.getElementById("ss").offsetLeft;
var offsetT = document.getElementById("ss").offsetTop;
这两个变量(offsetLeft和offsetTop)计算的是其自身所在页面的左边距和上边距。并不计算整个框架页的左边距和上边距。
而event.pageX和event.pageY两个变量却计算的是整个框架页的左边距(PageX)和右边距(PageY)
导致在计算元素在SpreadJS工作表上的x,y位置值时,出现计算错误。
  1. //获取拖动物理在屏幕的位置
  2.                     var offsetL = document.getElementById("ss").offsetLeft;
  3.                     var offsetT = document.getElementById("ss").offsetTop;
  4.                     //获取拖动块的值
  5.                                 console.log(offsetL);
  6.                                 console.log(offsetT);
  7.                                 console.log(event.pageX);
  8.                                 console.log(event.pageY);
  9.                     var x = event.pageX - offsetL;
  10.                     var y = event.pageY - offsetT;
  11.                     //获取单元格的位置
  12.                     var target = spread.hitTest(x, y);
复制代码
请问如何解决这个问题?谢谢!
不然拖拽功能页面无法放入框架页Frame中。

最佳答案

查看完整内容

您是指将外部元素拖拽进表单吗?可以参考这个demo https://demo.grapecity.com.cn/sp ... s/index.html?id=101 另外,SpreadJS的位置大小取决于承载他的dom元素,var offsetL = document.getElementById("ss").offsetLeft; var offsetT = document.getElementById("ss").offsetTop; 这些计算不属于SpreadJS的功能,建议您查找相关资料进行调整以及参考上面的demo进行调整

1 个回复

正序浏览
最佳答案
最佳答案
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-7-16 08:57:01
来自 2#
您是指将外部元素拖拽进表单吗?可以参考这个demo
https://demo.grapecity.com.cn/sp ... s/index.html?id=101

另外,SpreadJS的位置大小取决于承载他的dom元素,var offsetL = document.getElementById("ss").offsetLeft;
var offsetT = document.getElementById("ss").offsetTop;
这些计算不属于SpreadJS的功能,建议您查找相关资料进行调整以及参考上面的demo进行调整
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部