iPhone上的HTML5 Canvas在touchstart / mousedown事件中突出显示

每当触摸(并保持)canvas时,它都会以较暗的颜色突出显示。 触摸释放后,恢复正常。 它不像文本选择,它与iPhone在超链接上使用的亮点相同。

我使用jQuery来绑定事件:

$('canvas').bind('mousedown touchstart', function(e) { var c = $(this), offset = c.offset(); var touch = { x: (e.targetTouches ? e.targetTouches[0].pageX : e.pageX) - offset.left, y: (e.targetTouches ? e.targetTouches[0].pageY : e.pageY) - offset.top }; testApp.lastTouch = touch; return false; }); 

当应用程序保存到“主屏幕”时,问题会更严重。 当触摸canvas的边缘时,它确实发生在Web浏览器中,但是在主屏幕应用程序上,无论触摸的是哪个canvas,它都会执行它。

可能是这个问题的原因是什么?

我最终发现问题可以通过以下CSS解决:

 .puzzle canvas { -webkit-tap-highlight-color: transparent; } 

也许你需要在查看页面时取消元素?

 $(window).focus(function() { $(':focus').blur(); }); 

要么…

 $(document).ready(function() { setTimeout(function() { $(':focus').blur(); }, 200); // Arbitrary amount. }); 

似乎是一个粗略的解决方案,但它可能会有所帮助。