- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
在 Chrome、Safari 和 Firefox 中查看以下 jsFiddle。它应该非常详细地解释我所看到的。
总之,drag 和 dragend 事件要么没有 x 和 y 值,要么有奇怪的 x 和 y 值。
(见下面粘贴的代码) http://jsfiddle.net/CgzV3/10/
这些是浏览器中的错误吗?我们能否期望浏览器最终在拖动和拖动事件中具有合理的 x 和 y 值?我们能否期望 FireFox 最终支持 offsetX 和 offsetY 以及 dragenter/dragleave/dragover/drop 事件?
谢谢,内特
html:
<aside draggable="true" id="dragme">
Drag Me
</aside>
<aside droppable="true" id="drophere">
Drop Here
</aside>
<div id="notes">
Notes:
<ul>
<li>drag: In Chrome the x/y values for drag are reasonable as the drag is happening,
but then you get some crazy values in the last drag event when
the element is dropped.</li>
<li>drag: In Firefox, there are no x/y values in drag events at all</li>
<li>drag: In Safari, the x/y values in drag events seem reasonable</li>
<li>dragend: In Chrome, the x/y values in dragend are just strange. The screenX/screenY values seem to be almost accurate, except they are offset by the distance from the bottom left corner of the dragged element to the place where the dragged element was grabbed.</li>
<li>dragend: In Safari, the x/y values in the dragend seem to all be relevant to the outer window, not the iframe (which exists since this is inside jsFiddle. This is different from the dragstart event, which sets all the x/y values (except for screenX/screenY) relative to the iframe</li>
<li>dragend: In Firefox, there is only screenX/y, and it seems right.</li>
<li>dragenter/dragover/dragleave/drop: Seem good in Chrome/Safari/FireFox except that FireFox does not have offsetX/Y values</li>
</ul>
</div>
JavaScript:
function setCell(eventType, label, x, y) {
var row = ['', 'dragstart', 'drag', 'dragend', '',
'dragenter', 'dragover', 'dragleave',
'drop'].indexOf(eventType);
var cell = ['', 'client', 'page', 'screen', 'offset'].indexOf(label);
var val = [x, y].join('/');
document.getElementsByTagName('table')[0].rows[row].cells[cell].textContent = val;
}
function setRow(evt) {
var eventType = evt.type;
setCell(eventType, 'client', evt.clientX, evt.clientY);
setCell(eventType, 'page', evt.pageX, evt.pageY);
setCell(eventType, 'screen', evt.screenX, evt.screenY);
setCell(eventType, 'offset', evt.offsetX, evt.offsetY);
}
function dragstart(evt){
// FF needs this
evt.dataTransfer.setData("text/plain", "asd");
setRow(evt);
}
function dragover(evt){
evt.preventDefault();
if (evt.stopPropagation) evt.stopPropagation();
setRow(evt);
}
function drop(evt) {
console.log(evt.stopPropagation);
if(evt.preventDefault) evt.preventDefault();
if (evt.stopPropagation) evt.stopPropagation();
setRow(evt);
}
var dragme = document.getElementById('dragme');
dragme.addEventListener('dragstart',dragstart,false);
dragme.addEventListener('drag',setRow,false);
dragme.addEventListener('dragend',setRow,false);
drophere.addEventListener('dragenter',setRow,false);
drophere.addEventListener('dragover',dragover,false);
drophere.addEventListener('dragleave',setRow,false);
drophere.addEventListener('drop',drop,false);
最佳答案
截至 2016 年 2 月,我在 Windows7 上的 FireFox 中遇到不一致的结果。我正在使用拖放来重新定位网页上的控件。它适用于 Windows7 上的 FireFox v42、v43 和 v44:
问题出在 dragEnd() 上:
event.screenX 和 event.screenY 的值太大。 dragStart() 值是正确的。其他机器测试没有这个问题。
event.clientX 和 event.clientY 始终为 0。我认为这对于 FF 来说是正常的。
event.offsetY 不可靠。通常,它是 y 下降坐标的负值。例如,如果 y 计算为 100,FF 会将 event.offsetY 设置为 -100。如果我使用 -(event.offsetY) 来定位控件,那么它将始终在 100 到 110 的范围内。这非常奇怪但没什么大不了的,因为 event.screenX/Y 是其中的关键变量。
开发机为Windows8,适用于Chrome、FF、IE、Opera。在 FF 中的 LXDE 上以及其他人在他们使用的任何系统上成功测试。
这是一个个人项目,Windows 7 计算机是我们的媒体服务器,所以没什么大不了的,但非常奇怪。
关于html - html5 拖动事件中的 X 和 Y 值在浏览器之间不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20482233/
我正在使用 gridstack 来显示我的小部件。拖动和调整大小适用于 gridstack 卡,但当我将卡拖到底部时,卡的容器不会滚动。我想在拖动卡片时滚动那个容器。该容器只是一个 div 元素,所有
我目前正在构建一个多个处理的 slider 小部件,并且目前正在实现手势检测器。我有一个问题,如果您用第二根手指触摸/拖动屏幕,检测器会识别它并调用 onDragUpdate 函数,这是我试图禁用的功
我是 AngularJS 的新手,我对当前的项目有点压力,这就是我在这里问的原因。 我看到 AngularJS 有 ng-dragstart 事件( http://docs.ng.dart.ant.c
关于缩放大图像和平移有什么建议吗?最好内联在页面上。 我一直在使用PanoJS(又名GSV2),但是现在越来越多的人使用iPhone/iPad/Android类型的设备,这个库要么太慢,要么旧版本不支
我在尝试拖动 JPanel 时遇到问题。如果我纯粹在 MouseDragged 中将其实现为: public void mouseDragged(MouseEvent me) { me.getS
我有一个需要与屏幕底部对齐的 ImageButton,当我单击并拖动它时,它会随着我的手指移动一定距离,超过该距离它不会远离原点,而是继续跟随我的手指从原点开始的方向。 当我松手时,按钮必须滑回原点。
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 9 年前。 Improve this qu
我需要一个解决方案来实现拖动和缩放,在不使用矩阵的情况下围绕屏幕 onTouch 事件路由 ImageView。我搜索了很多但所有答案都是用矩阵完成的,因为我在屏幕矩阵中有多个对象不适合我,我想拖动和
我需要一些帮助来拖动 UIView 以显示主视图下方的菜单 View 。 我有两个 UIView。menuView - 包括菜单按钮和标签 和 mainView - 位于 menuView 之上。 我
谷歌地图即使设为 true 也不可拖动/拖动。 重现步骤:在新选项卡中加载带有 map 的页面,检查并在不执行任何操作的情况下转到移动 View 。现在在移动 View 中左右上下拖动 map ,它将
我在绘制和缩放 ImageView 时遇到问题。请帮帮我.. 当我画一些东西然后拖动或缩放图像时 - 绘图保留在原处,如您在屏幕截图中所见。而且我只需要简单地在图片上绘图,并且可以缩放和拖动这张图片。
所以我试图模拟鼠标左键单击和鼠标左键释放来执行一些自动拖放操作。 它目前在 C# Winforms(是的,winforms :|)中并且有点笨拙。 基本上,一旦发送了点击,我希望它根据 Kinect
我有一个巨大的 HTML5 Canvas,我希望它像谷歌地图一样工作:用户可以拖动它并始终只看到它的一小部分(屏幕大小)。它只呈现您在屏幕上可以看到的部分。我该怎么做?你有想法吗? 最佳答案 2 个简
我有以下拖放应用程序代码,它在桌面上按预期工作,但是当我想在移动设备上使用该应用程序时,拖动事件无法按预期工作。我知道触摸事件是必需的,但我不确定如何设置它们和实现这些功能。 .object
我正在使用 react-leaflet map ,我用状态改变了很多 map 属性,但是当使用状态来改变拖动属性时它不起作用。 { this.map = map}}
我知道我可以轻松地允许用户在OpenLayers中选择多个功能/几何图形,但是随后我希望使用户能够轻松地同时拖动/移动所有选定的功能。 使用ModifyFeature控件一次只能移动一个要素...是否
我有一个 Windows Phone 运行时应用程序,我使用 xaml 在 map 上显示图钉。 当我拖动 map 时,控件试图保持在相同位置时会出现一些滞后。 任何帮助,将不胜感
我通常不会提出此类问题/答案,但我想我会这样做,因为我已经看到这个问题被问了 20 多次,但没有一个答案真正有效。简而言之,问题是,如果您在可拖动 jQuery 项目内的任何位置有可滚动内容(over
我确信一定有一种简单的方法可以做到这一点,但到目前为止,我已经花了很长时间在各种兔子洞中没有成功。 我有一个支持拖放的 Collection View 。被拖动的单元格有 UIImageView在 c
如何在两个virtualtreeview之间复制以复制所有列,而不仅仅是第一列? 复制前: 复制后: 最佳答案 树控件不保存任何数据。它不包含要显示的列数据,因此无法复制它。而是,当树控件想要显示任何
我是一名优秀的程序员,十分优秀!