【发布时间】:2011-10-26 21:45:07
【问题描述】:
我有一个使用 html5 画布的绘图应用程序。当用户正在绘图并且笔滑出画布区域时,chrome 会以浅蓝色或黄色突出显示页面上的 html 元素。
这会破坏绘图体验。有没有办法防止这种高亮发生?
事件处理和绘制代码基于这篇文章:http://jsfiddle.net/rnNFB/1/
var x ;
var y ;
var lower = $('#lower').get(0).getContext('2d') ;
var upper = $('#upper').get(0).getContext('2d') ;
var dragging = false ;
function drawStroke(ctx){
var i ;
ctx.strokeStyle='rgba(0,0,0,0.5)' ;
ctx.lineWidth=10 ;
ctx.beginPath() ;
ctx.moveTo(x[0],y[0]) ;
for (i=1; i < x.length; i++){
ctx.lineTo(x[i],y[i]) ;
}
ctx.stroke() ;
}
$('#upper').mousedown(function(e){
x=[e.layerX];
y=[e.layerY];
dragging=true}) ;
$('#upper').mousemove(function(e){
if (dragging){
x.push(e.layerX);
y.push(e.layerY);
upper.clearRect(0,0,upper.canvas.width,upper.canvas.height) ;
drawStroke(upper) ;
}}) ;
$('#upper').mouseup(function(e){
dragging = false ;
upper.clearRect(0,0,upper.canvas.width,upper.canvas.height) ;
drawStroke(lower) ;
}) ;
如果您在画布标签上方添加一些 h1 标签,然后在画布上绘制,将其拖到边界框之外,您将看到蓝色突出显示。有没有办法防止这种行为?
【问题讨论】:
-
这个问题不仅限于canvas。
-
是的,它适用于任何拖放、行选择等,几乎所有与文本内容无关的东西......我发现下面的答案在许多情况下都有帮助.
标签: html canvas drawing highlight