如何修改 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 以支持黑莓触控板?的主要内容,如果未能解决你的问题,请参考以下文章

Mac新手教程二,Mac OS 触控板的15种触控板手势讲解

Ubuntu下触控板手势调节软件xSwipe

华硕电脑的触控板两个手指没有反应了

Mac新手必看:Mac电脑触控板与聚焦功能

苹果的黑科技:如何让按不动的触控板产生点按的感觉

黑苹果之触控板篇