如何修改 jcrop 以支持黑莓触控板?
Posted
技术标签:
【中文标题】如何修改 jcrop 以支持黑莓触控板?【英文标题】:how to modify jcrop to support blackberry trackpads? 【发布时间】:2012-07-29 14:28:44 【问题描述】:我已经联系了开发人员,他表示我将自行修改代码以支持此方法,因为当前编写的代码对黑客攻击不是很友好...我试图在不修改的情况下进行修改100% 成功。
目前 JCrop 正在使用 jquery 来跟踪 .mousedown 以开始选择,并使用 .mouseup 来接受/停止选择。当您使用 jcrop 单击触控板时,黑莓设备(带触控板)上会发生什么,当您移动光标时它开始绘制选择(您不能单击(按住)并在触控板上拖动它更多的是单击事件)。问题是当您再次单击时,它会删除选择并开始从当前光标位置重新绘制它。在我看来,JCrop 正在使用 mousedown 来跟踪单击和拖动选择过程,然后使用 mouseup 来释放选择并保留裁剪框。
我考虑分配一个变量,如 clickCount 跟踪点击和触发事件的函数。因此,每次用户单击时,它都会运行一个函数来跟踪 clickCount 并触发开始选择或完成选择事件。
以下是对 .mousedown 和 .mouseup 的所有引用:
var $trk = newTracker().width(boundx + (bound * 2)).height(boundy + (bound * 2)).css(
position: 'absolute',
top: px(-bound),
left: px(-bound),
zIndex: 290
).mousedown(newSelection);
function dragDiv(ord, zi) //
var jq = $('<div />').mousedown(createDragger(ord)).css(
cursor: ord + '-resize',
position: 'absolute',
zIndex: zi
);
if (Touch.support)
jq.bind('touchstart', Touch.createDragger(ord));
$hdl_holder.append(jq);
return jq;
var $track = newTracker().mousedown(createDragger('move')).css(
cursor: 'move',
position: 'absolute',
zIndex: 360
);
function toFront() //
$trk.css(
zIndex: 450
);
if (trackDoc)
$(document)
.bind('mousemove',trackMove)
.bind('mouseup',trackUp);
//
function toBack() //
$trk.css(
zIndex: 290
);
if (trackDoc)
$(document)
.unbind('mousemove', trackMove)
.unbind('mouseup', trackUp);
if (!trackDoc)
$trk.mousemove(trackMove).mouseup(trackUp).mouseout(trackUp);
帮助/想法将不胜感激。谢谢
【问题讨论】:
【参考方案1】:这样的事情怎么样:
var isDragging = false;
function onMouseDown(event)
isDragging = !isDragging;
function onMouseUp(event)
if (isDragging)
event.preventDefault();
window.addEventListener('mousedown', onMouseDown, false);
window.addEventListener('mouseup', onMouseUp, false);
这样,onMouseUp 在技术上应该只在 other 时间触发一次,可能会阻止 release 触发器停止选择。当然,这需要与您的代码进行更深入的集成。
【讨论】:
以上是关于如何修改 jcrop 以支持黑莓触控板?的主要内容,如果未能解决你的问题,请参考以下文章