0

我已经联系了开发人员,他表示我将自己修改代码以支持这种方法,因为当前编写的代码对黑客攻击不是很友好......我试图修改但没有 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);
      }

帮助/想法将不胜感激。谢谢

4

1 回答 1

0

类似这样的事情怎么样:

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 应该只每隔一次触发一次,可能会阻止释放触发器停止选择。当然,这需要与您的代码进行更深入的集成。

于 2012-08-15T16:43:17.537 回答