Fabric.js帆布在iPad和iPhone上闪烁

Tim*_*nen 3 javascript iphone canvas ipad fabricjs

当我使用Fabric.js生成画布时,在iPad(迷你)和iPhone(4)中用手指敲击时会出现恼人的闪烁.闪烁就像帆布快速变黑而再变白.

重现步骤:

  1. 用iPad或iPhone浏览例如.此线条绘制实用程序:http: //jsfiddle.net/fabricjs/URWru/ (function dummy{})

  2. 将手指放在画布上然后将其抬起.这样做很快,就像用鼠标点击一样.手指向上时会发生闪烁.如果您将手指放在画布上一秒钟或更长时间然后向后抬起,则不会发生闪烁.

为什么闪烁发生以及可以采取哪些措施来防止它?

Tim*_*nen 5

这是Q&A风格的答案.

解决方案很简单.将此添加到css:

canvas {
  -webkit-tap-highlight-color:rgba(0,0,0,0);
}
Run Code Online (Sandbox Code Playgroud)

Ryan Grove在yuiblog.com中描述了原因:

"不幸的是,Mobile Safari没有办法区分普通点击订阅者和委派点击订阅者,这是将click事件附加到容器而不是该容器的每个子容器的时候.因此,委派的点击将导致整个容器被突出显示而不仅仅是被点击的项目,这对用户来说既丑陋又令人困惑."

据报道,这个技巧至少起作用:基于Android的浏览器,iPhone Safari,iPad Safari,iPad Chrome.