Javascript, HTML e CSS

Bem, estas são as bases de construção de aplicações web e juntando a PHP por exemplo e quem sabe XML, a quantidade de tecnologias que é necessário dominar para criar uma aplicação web pode ser realmente grande. Existem várias alternativas, como o GWT e outros para tornar a criação de aplicações dependente de apenas uma linguagem, mas nem sempre serão tão versáteis como se pode desejar.

E nisto que tenho estado a mexer, com JQuery a ajudar. E devo dizer que se torna por vezes bastante difícil separar código de apresentação em especial quando o lado servidor necessita de alterar a apresentação em si.

Mas tirando isso vou partilhar dois pequenos “snippets” relativos a tornar uma aplicação web a comportar-se mais como uma aplicação de desktop.

Desactivar botão direito

Isto pode ser algo controverso, mas já lá vai o tempo em que era uma táctica para evitar que se visse o código fonte da página. Acho esta técnica útil em imitar o comportamento de aplicações desktop porque estas só mostram o menu de botão direito se tiverem algo para mostrar, de outro modo porque mostrar o menu do browser? Talvez em determinadas áreas mostrar um menu da aplicação em si.


$(document).ready(function(){$(document).bind('contextmenu',function(e){return false;});});

Código muitíssimo simples em JQuery. Podendo-se fazer bind de uma função apropriada nas zonas que se realmente quer o botão direito a funcionar.

Impedir a selecção de texto

Mais uma vez isto não é para proteger os conteúdos. Faz-me um bocado de confusão poder seleccionar certos textos, como por exemplo o de botões, quer sejam elementos formatados para parecer botões como os inputs.

[unselectable=on]
{
-moz-user-select: none;
-khtml-user-select: none;
user-select: none;
cursor: default;
}

Este CSS é algo ligeiramente estranho e tudo tem razão de ser:

  1. Estamos a criar uma nova propriedade de elementos de nome unselectable, que quando igualada a on irá fazer com que o elemento use o estilo definido. A razão para colocar o estilo deste modo é que o Internet Explorer suporta esta propriedade exactamente com o efeito que desejamos.
  2. Utilizamos -moz-user-select: none; para alcançar o efeito no Firefox
  3. Utilizamos -khtml-user-select: none; para termos o efeito em browsers Webkit
  4. O estilo user-select: none; é o correcto em CSS 3, mas no entanto, como podem calcular pelos estilos já indicados, não é ainda suportado totalmente em todos os browsers.
  5. O rato passa normalmente para o cursor de selecção quando sobre texto, isto é evitado com o cursor: default;

Atenção a ter é que, como é uma propriedade, não é herdado pelos elementos filhos, esses continuarão a ter texto seleccionável na maioria dos browsers.

Para utilizar basta:


<span unselectable="on">Não podes seleccionar isto</span>

Consegui verificar o funcionamento em IE8, Firefox 3.6.3, Chrome 5.0.375.29 dev (que altera o cursor do rato para o de selecção sempre que se arrasta o rato) e Opera 10.53. O meu Safari 4 recusa-se a arrancar sem crashar imediatamente por isso não deu para ver.

Publicado em CSS, Javascript. 1 Comment »