Empêcher l'activation accidentelle de sélectionner/déplacer la surbrillance

J'ai une application de dessin à l'aide de html5 canvas. Lorsque l'utilisateur est le dessin et le stylo glisse hors de l'espace de la toile, inserts chromés éléments html de la page en bleu clair ou jaune.

Empêcher l'activation accidentelle de sélectionner/déplacer la surbrillance

C'est perturbant pour le dessin de l'expérience. Est-il possible d'empêcher une telle évidence de passe?

La gestion des événements et le code de dessin est basé sur ce post: 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) ;
}) ;

Si vous ajoutez des balises h1 au-dessus de la toile tags ensuite dessiner sur le canevas, la faisant glisser à l'extérieur de la boîte englobante, vous verrez un surlignée en bleu. Est-il un moyen pour éviter ce problème?

  • Ce problème n'est pas seulement limitée à la toile.
  • Oui, c'est applicable à tout le glisser-déposer, ligne de sélection, etc, à peu près tout ce qui n'est pas simplement du texte contenu lié... j'ai trouvé la réponse ci-dessous pour être utile dans de nombreux contextes.
InformationsquelleAutor Homan | 2011-08-14