Criar elementos no DOM com DocumentFragment

O uso do DocumentFragment para criação de nós no DOM é muito importante no que diz respeito a performance do seu javascript, quando é necessário fazer a inserção de vários elementos de uma vez só.

DocumentFragment é um container para nós DOM, que  pode receber elementos e depois ser adicionado (através do método appendChild) a um nó. O benefício se dá tanto na performance do script (como veremos logo mais, e também pode ser visto nesse post do John Resig) como na renderização da página (reflow e repaint) no browser, uma vez que ao invés de ter que adicionar n elementos, um a um, eles são adicionados de uma vez só.

Abaixo tem um trecho de código usando o DocumentFragment, exemplificando o uso:

var div = document.getElementById("minha_div"); //passo 1
var
fragment = document.createDocumentFragment();
for(var i=0; i<100; i++) {
 var d = document.createElement("p");
 fragment.appendChild(d); //passo 2
}
div.appendChild(fragment); //passo 3

O uso é bem simples: deve-se criar um DocumentFragment, atribuindo a uma variável (passo 1), então para cada elemento criado esse elemento é adicionado ao documentFragment (passo 2) e, por final, se adiciona o DocumentFragment ao element que será o container desses nós no DOM.

Aqui http://jsfiddle.net/chrisbenseler/RQ28C/ tem um teste comparando a criação com e sem DocumentFragment; para criar 5000 elementos

e adicionar a uma div, com DocumentFragment o browser (Firefox 14.0.1 do Ubuntu) leva em média 230 milisegundos; já sem, 330 milisegundos.

Internet Explorer 8 – beta 2

E foi lançado o beta 2 do Internet Explorer 8 (faça aqui o download).

Além de estar bem mais bonito e fácil de usar, a grande diferença para quem trabalha com web é o suporte dado pelo browser aos padrões web (webstandards) – a Microsoft já tinha feito um bom avanço no IE7, quando comparado ao IE8; mas parece que agora essa preocupação ficou mais forte (será que  apelo da comunidade ajudou nisso?). Inclusive muitas coisas da especificação 3 do CSS estão sendo implementadas (veja aqui a lista de novidades em termos de CSS no IE8).
Okey, muitas coisas desse IE8 não são novidades para quem usa Firefox ou Opera, por exemplo, como um DOM Inspector ou melhor debugger de javascript (coisa que o Firebug faz no FF), a opção de desativar o CSS ou, ainda, um campo para buscar em diferentes serviços (Live Search, Google, Yahoo, etc…) e suporte a microformats (IE´s Web Slices).

 

A cara nova do IE8:


Campo de sugestão de busca


Seleção de compatibilidade (onde você pode ver as páginas rendereizadas em versões antigas do IE)


Bookmarks

 

Vale a pena falar que há uma mudança grande na parte de privacidade: existe uma funcionalidade nova, chamada de private browsing, onde o usuário pode incapacitar o browser de acessar dados (como o histórico, dados de formulário, arquivos temporários, etc…). Com um clique apenas, você pode definir que um site específico não deve ter seus dados gravados, evitando qualquer referência a ele no seu histórico.

Sugiro esse post aqui, bem completinho, sobre as funcionalidades do IE8.

[update]Nesse post aqui no Webinsider, fala-se sobre o impacto do private browsing em termos de métricas[/update]