freeDOM e o método getElementsByTagName

No post anterior, falamos sobre os benefícios em se trabalhar com o método getElementById através da freeDOM. Neste post, falaremos sobre seu “irmão”, o método getElementsByTagName.

Qual a utilidade do getElementsByTagName?

O método getElementsByTagName retorna uma lista de elementos cujo a tag desses elementos é igual a informada no parâmetro do método.

Observe a sintaxe e uma forma de uso do método getElementsByTagName.

var tagLinks = document.getElementsByTagName('a');
for ( var i = 0, foo; foo = tagLinks[i]; i++ ) {
	alert(foo.innerHTML);
}

Agora, compare a utilização do mesmo método através da freeDOM:

var tagLinks = $tags('a');
for ( var i = 0, foo; foo = tagLinks[i]; i++ ) {
	alert(foo.innerHTML);
}

Ainda acha que é pouco? Tudo bem. Imagine que você precisa que seja retornado apenas as tags a que estão dentro de um objeto cujo ID desse objeto seja igual a menu. Com a freeDOM, é só fazer assim:

var tagLinks = $tags('a',$('menu'));
for ( var i = 0, foo; foo = tagLinks[i]; i++ ) {
	alert(foo.innerHTML);
}

Pronto :)

Referência sobre o método getElementsByTagName

freeDOM e o método getElementById

A freeDOM lhe possibilita trabalhar com o método getElementById como nunca visto antes. A função da freeDOM referente a esse método é a $(). A qual iremos conhecê-la neste post.

Qual a utilidade do método getElementById?

O método getElementById retorna um elemento cujo ID é igual ao informado no parâmetro desse método.

Sua sintaxe é a seguinte:

obj = document.getElementById('id_do_objeto');

Utilizando a freeDOM, você fará apenas o seguinte:

obj = $('id_do_objeto');

Ou seja, você codificou muito menos e obteve o mesmo resultado. Mas, a freeDOM é mais poderosa ainda e não faz apenas isso. Imagine que você precisa selecionar vários elementos através do ID de cada um deles. Você fará o seguinte:

objs = $(["id_1","id_2","id_3","..."]);

Mas se preferir, poderá utilizar assim também:

objs = $("id_1","id_2","id_3","...");

Use o que lhe for mais conveniente que a freeDOM fica encarregada de compreender sua necessidade.

Referência sobre o método getElementById:

Utilizando a freeDOM, você codifica menos e vive mais.

Se você ainda não conhece a freeDOM, já é hora de conhecê-la. Irei fazer uma série de posts abordando essa fantástica biblioteca de JavaScript e DOM. Assim, você irá familiarizar-se melhor com ela.

Inicialmente, falarei sobre as principais funções com relação ao DOM que essa biblioteca oferece. Durante cada post, você perceberá como é simples, fácil e prático trabalhar com o DOM através da freeDOM.

A intenção é codificar cada vez menos e viver cada vez mais :)

Abaixo, segue a relação das principais funções da freeDOM.

A media que eu for escrevendo os posts sobre cada uma dessas funções, voltarei a este para atualizá-lo com seus respectivos links.

Você conhece a freeDOM?

Se você conheceu a mtzlib, estará familiarizado com a freeDOM. Uma vez que ela (mtzlib) mudou o seu nome para freeDOM.

freeDOM.js

O que é?

É um projeto iniciado para desenvolver uma biblioteca de funções JavaScript simples e poderosa, para ajudar o desenvolvimento e aumentar a produtividade de websites e aplicativos web.

Porque freeDOM?

freeDOM é um joguinho de palavras que representa exatamente nossa coleção de funções: free(gratuito) + DOM(Document Object Model). Ao mesmo tempo expressa nossa intenção de dar liberdade ao desenvolvedor, utilizando as funções e parâmetros do jeito que melhor lhe convém.

Funcionalidades

O desenvolvimento da freeDOM ainda está em fase inicial, porém já dá suporte as principais funcionalidades do DOM e inclui um add-on que transforma aplicações ajax em uma tarefa extremamente simples.

Como colaborar?

Atualmente o projeto é atualmente mantido apenas por Andre Metzen (andre[at]metzen.com.br) e Leandro Vieira (leandro[at]w3invent.com.br). Se você tem interesse em colaborar de qualquer forma, é só nos enviar um e-mail.

Download

Acessa a página do freeDOM.js

A diferença entre os métodos substr e substring do JavaScript

Hoje precisei pegar parte de uma string durante o desenvolvimento de um script que eu estava envolvido pela parte da manhã.

Para selecionar-mos parte de uma string, temos a disposição dois métodos: substr e substring. Ambos fazem a “mesma coisa”, mas há uma diferença sutil entre eles importante de ser observada.

Ambos os métodos possuem dois parâmetros, sendo o segundo deles opcional e através do qual se encontra a diferença entre eles. Observe a sintaxe:

substr(índice_inicial,índice_final)
substring(índice_inicial,índice_final)

Agora observe este exemplo de uso:

var string = "0123456789";
alert('substr(0): ' + string.substr(3)); // Teremos 3456789
alert('substring(0): ' + string.substring(3)); // Teremos 3456789
alert('substr(3,6): ' + string.substr(3,6)); // Teremos 345678
alert('substring(3,6): ' + string.substring(3,6)); // Teremos 345

O segundo parâmetro do método substr indica a quantidade de caracteres a serem exibidos. Ou seja, substr(3,6) exibirá uma string com seis caracteres, iniciando-a a partir do quarto caractere e finalizando-a com seis caracteres no total.

Já o segundo parâmetro do método substring indica até qual caractere na string que exibiremos. Isto é, substring(3,6) exibirá uma string com três caracteres, uma vez que ela será iniciada no quarto caractere e finalizado antes do sexto.

Para resumir, seria algo assim o segundo parâmetro dos referidos métodos:

substr(índice_inicial,tamanho_string)
substring(índice_inicial,pare_antes_do_caractere)

É importante conhecermos essas diferenças e evitarmos dor de cabeça durante o desenvolvimento ou compreensão de algum script.

Publicado em Sem categoria | Marcado com

Disponível o w3FormValidation 2.2

o w3FormValidation 2.2 está recheado de novidades e irei contar todas elas para você :)

Disponibilizei o changeLog do w3FormValidation via RSS para lhe ajudar estar sempre antenado com os novos “releases”.

Nesta versão 2.2 houve uma padronização nos nomes dos tipos de validação; agora todos eles estarão em inglês.

Foi corrigido o bug no tipo de validação: url. O qual considerava uma estrutura de subdomínio inválida.

Agora o w3FormValidation oferece suporte a validação de radio buttons de forma simples e fácil, como deve ser.

Novos tipos de validação foram acrescentados e irei abordar um por um aqui no blog, aguarde. Enquanto isto, lhe informo quais foram os novos tipos de validação:

  • digits
  • length
  • range
  • if (condicional)

Consulte os tipos de validação do w3FormValidation.

Ajax e os acentos

Neste post, irei reproduzir um outro post que eu havia escrito em Janeiro deste ano, o qual falava sobre Ajax e os acentos.

Você já “queimou a cuca” ao trabalhar com Ajax e perceber que os acentos não estão sendo exibidos corretamente? Então, passei por isso ao desenvolver uma busca instantânea com esse método. E a solução? Vou explicar-lhe neste post.

Sempre que tenho alguma dúvida durante o meu trabalho, recorro aos amigos, aos fóruns e principalmente ao Google; e foi nesse último que encontrei a solução para o meu problema, no tutorial: Ajax para quem só ouviu falar, escrito pelo Élcio.

Lembrando que trabalho com PHP e se você trabalha com outra linguagem dinâmica, faça as modificações necessárias.

No arquivo PHP, precisamos utilizar a função urlencode(). Então, teremos algo assim:

$txt = "Tenha um bom coração.";
$txt = urlencode($txt);

O texto retornado será algo assim:

Tenha+um+bom+cora%E7%E3o.

Bom, agora no javascript fazemos assim:

var resultado = ajax.responseText; // Texto retornado pela requisição do ajax.
resultado = resultado.replace(/\+/g,” “); // Substitue o “+” por um espaço.
resultado = unescape(resultado); // Desfaz o que a função urlencode(); fez.

Bom, este é o processo para termos os acentos funcionando perfeitamente em nossas aplicações em Ajax.

O código do w3FormValidation foi liberado e comentado

No post anterior em que anunciei o w3FormValidation 2.0 o Jader Rubini contribuiu com um interessante comentário.

Em seguida respondi a ele e como promessa é dívida o código está liberado nas duas versões: o original (16,1 KB) – todo comentado e indentado – e o compactado (6,29 KB).

Desta forma será possível um feedback melhor dos leitores e o envio de sugestões para o w3FormValidation, conto com o seu :)

Os novos tipos de validação e o suporte a validação de radio buttons já está aqui no forno, quando finalizar irei disponibilizá-la – é claro – e comentarei a respeito.

Característica comum nos aplicativos web 2.0 me preocupa.

Tenho percebido uma característica comum nos aplicativos web 2.0 que me preocupa em muito, se trata da utilização do javascript obstrutivo. Sim, muitos sites a la web 2.0 utilizam o javascript dessa maneira, que pena.

O que me intrigou a observar essa questão, foi a agilidade em que os aplicativos são desenvolvidos, muitos deles não gastam mais de uma semana. E com isso, a acessibilidade em alguns aspectos é desconsiderada.

Ora, em meados a propagação cada dia mais e mais dos padrões da web, por que os desenvolvedores estão utilizando o javascript de forma obstrutiva? Seria a pressa em lançar seus serviços on-line? Seria uma desconsideração para com aqueles que navegam com o javascript desabilitado? Ou seria uma forma para posteriormente (e se acontecer) incrementar uma versão com o HTML puro?

Todos os dias eu penso em um forma de ser produtivo e ágil no desenvolvimento para web, trabalhando com Ajax, javascript não-obstrutivo, DOM e o PHP (linguagem dinâmica com o qual eu trabalho). No meu curso Web Sites com Ajax eu explico e exemplifico a metodologia que utilizo, mas confesso, estou ávido a procura de algo novo.

Qual a sua metodologia de desenvolvimento para se trabalhar com javascript não-obstrutivo?

[update]
Uma boa matéria do parceiro Metzen sobre javascript não-obstrutivo

[/update]

Camada de comportamento – visão geral

A camada de comportamento é utilizada para acessar/modificar/criar/excluir os elementos de uma página web. Isto significa que a camada de comportamento tem em “mãos” todas as tags, atributos e conteúdos de uma página e com isso ela poderá manipulá-los como você desejar.

Como expliquei em um artigo anterior a camada de conteúdo é que a responsável em anexar a ela a camada de comportamento. Uma vez que a camada de conteúdo trabalha sem a camada de comportamento e não vice e versa.

Para você comprovar que o JavaScript pode acessar todo o conteúdo de uma página web, faça o seguinte:

Na barra de endereço (Address Bar) do seu navagador (browser) digite o seguinte:

javascript:alert(document.body.innerHTML);

Será exibido um Alert Box com todo o conteúdo da página, isto é, se dentro da tag body tiver algum conteúdo, é claro.

Isto é muito útil quando inserimos novos elementos em uma página ou quando o removemos ou o alteramos. Uma vez que a exibição do código fonte de uma página mostra-nos apenas o conteúdo que foi carregado quando acessamos a página e não o conteúdo modificado como ele está em seu estágio atual.

Então, exibir o código fonte – neste caso da tag body, apenas – da forma como apresentei acima é a solução. Mas, você concordará comigo no seguinte ponto: ver o conteúdo de uma página dentro de um Alert Box é totalmente desagradável e limitado.

Então, a melhor solução – que conheço até o momento – é a utilização da extensão Web Developer – somente para o Firefox – uma vez que com ela nós temos o seguinte recurso: View Generated Source localizado dentra da opção View Source.

Essa opção, View Generated Source, mostra o código fonte de uma página em seu estado atual, ou seja, se alguns dos elementos da página foi modificado/excluído pelo JavaScript você verá tal modificação. Algo que não acontece quando utilizamos a simples opção: View Source ou Exibir código fonte.

Até o próximo post sobre camadas de desenvolvimento web.