将元素拖放到iframe中.可降区域坐标错误,碰撞错误
Drag and drop elements into an iframe. Droppable area has wrong coordinates and collisions are wrong
我需要在网页元素和iframe元素之间实现拖放功能(在你开始抱怨iframe之前,我需要它的技术原因,它不是一个选项)。
我在页面中有一些元素可以被拖放到iframe内的目标可拖放元素中。
我已经设法用jQuery UI和YUI做到了这一点,尽管两个库都提出了同样的问题:目标元素(可拖放的目标)坐标被误解了,两个库考虑的拖放区域是错误的,不代表实际的可拖放对象,因此拖放对象和被拖放元素之间的碰撞完全混乱了。这就像标准库看到可掉落元素被放置在另一个位置,而不是它实际所在的位置。
我认为这是由于iframe没有被定位在页面的左上角,而是在中间。我这么想是因为我读过很多人抱怨这个问题,如果iframe位于左上角,问题就会出现。有人建议,可放元素的坐标可以根据screenX和screenY计算,而不是clientX和clientY,这可能是问题的原因,没有考虑到元素在iframe内,因此iframe外的其他元素之间的坐标不同。
因此,由于似乎没有办法直接使用库功能来解决这个问题,而且我真的没有时间尝试那里可用的每个库,我正在考虑通过修改(修补)有问题的库的内部函数来解决这个问题。
问题是:
1)是否有人以前遇到过这种行为,并设法解决了这个问题?或者,是否有一个库可以完美地做到这一点?
2)是否有一些方法可以使用库本身的方法和功能来解决这个问题?如果没有
3)有人知道库的哪一部分计算可拉区域坐标,以便我可以将其固定为最后的极端选项吗?
提前感谢,即使是最小的帮助将被感激!
编辑
这个小提琴演示了这个问题。尝试将绿色方块移动到红色方块内(红色方块位于iframe内)。你会发现两个方块之间的碰撞是错误的。
http://jsfiddle.net/DQdZ9/23/这不是一个"银弹",但我将继续把这个作为一个答案,但我不确定它对你有多大价值。我在jQuery UI中找到了一个关键函数,它可能就是您正在寻找的。它在$.ui.ddmanager
(拖放管理器)中,函数是prepareOffsets
。这条线:
m[i].offset = m[i].element.offset();
似乎是在设置偏移量,以便在实际删除元素时使用。在这里可以根据可掉落元素是否是iframe的子元素来调整产生的偏移量。
上面还有另一个函数$.ui.intersect
,它执行逻辑来查看可拖放和可放是否相互相交。
我使用的是最新版本的jQuery UI,文件是 jQuery - UI -1.8.14.custom.js 2012-2029行。如果你得到的是单个可放文件本身jquery.ui.droppable.js,它在第203-220行。这些是dev文件,不是min文件
- EaseJS拖放;放下(动画CC)电影剪辑的鼠标坐标
- Node.js v6.2.0类扩展不是函数错误
- Jquery菜单操作不稳定,定位不正确,存在一般错误
- document.open/document.write没有正确地清除chrome中的文档——这是chrome的错误吗
- 试图在引导模式内动态生成图表,得到offsetWidth错误
- 为什么会出现错误;未捕获的类型错误:undefined不是函数;
- 我如何修复包含在captcha的addthis中的错误
- ontouchend-ios返回错误的坐标
- 断言错误:断言失败:坐标数组的长度应与步幅匹配
- Amcharts-地图:自定义地图上的错误坐标(纬度/经度)(罗马尼亚县级)
- 谷歌地理编码器返回错误的地址坐标
- jQuery UI:Y 鼠标在放置可拖动对象时坐标错误
- 为什么画布中的鼠标坐标是错误的
- Jquery弹出2许多警报和错误的坐标
- Gnuplot:网站上嵌入的交互式SVG图形在缩放时显示错误的鼠标坐标
- Nokia Here地图错误时,建立一个路线与许多坐标
- 将元素拖放到iframe中.可降区域坐标错误,碰撞错误
- 坐标转换javascript库Pro4js错误结果
- Javascript谷歌地图坐标,parseFloat'坐标'+随机数错误
- 画布填充矩形有错误的 X 坐标