Gerador de Sprites CSS
Categorias

Evitando o perigo de palavras muito longas em caixas de comentários

Você cria aquele layout todo bacana para seu site. Próximo ao conteúdo, você coloca uma caixa onde os visitantes poderão entrar com comentários. Então, aparece um usuário mal-intencionado e escreve uma palavra interminável, sem qualquer tipo de espaço no meio que possa servir para quebrar a linha. Resultado? A palavra gigantesca ultrapassa o espaço da área de comentário e invade o conteúdo ao lado.

A verdade é que todo o input inserido por um usuário precisa ser filtrado, analisado e limpo antes de ser publicado. Administradores de bancos de dados conhecem muito bem o perigo de um SQL Injection. E Webdesigners conhecem muito bem o risco da “caixa estourada”.

error

Uma das alternativas para corrigir esse problema é usando a propriedade CSS overflow, com valor hidden para cortar o que exceder o espaço especificado.

#comentarios {
    overflow: hidden
}

error-02

Mas esta abordagem pode apagar conteúdo válido, interrompendo palavras legítimas ou uma URL no meio da caminho. Outra alternativa seria mudar o valor do overflow para auto, criando uma barra de rolagem quando necessário. Melhor ainda seria usar a propriedade overflow-y, para que a barra de rolagem apareça apenas na horizontal:

#comentarios {
    overflow-y: auto;
}

error-03

Ainda que esta solução permita ver todo o comentário inserido pelo usuário, barras horizontais podem ser deselegantes. Não seria melhor se a própria palavra interminável quebrasse magicamente para a linha de baixo? Isso é possível com a propriedade word-wrap com o valor word-break:

#comentarios {
    word-wrap: break-word;
}

error-04

Esta propriedade foi introduzida pela Microsoft no Internet Explorer 5.5 e depois adotada em todos os navegadores. Então, seu suporte é amplo e irrestrito. Com o CSS3, a propriedade foi substituída por overflow-wrap, mas ainda não tem um suporte universal. Para evitar dores de cabeça futuras, por enquanto é sugerido usar as duas sintaxes no mesmo bloco CSS:

#comentarios {
    word-wrap: break-word;
    overflow-wrap: break-word;
}