<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-489365202656835633</id><updated>2011-12-27T12:23:16.283-03:00</updated><category term='Programação'/><category term='IEfix'/><category term='jQuery'/><category term='POO'/><category term='SQL'/><category term='Dicas'/><category term='Gadget'/><category term='SQL Injection'/><category term='W3C'/><category term='Novidade'/><category term='Web Developer'/><category term='XML'/><category term='voceSabia'/><category term='Windows'/><category term='Ajax'/><category term='Google'/><category term='codes'/><category term='PHP'/><category term='DOM'/><category term='Expressões Regulares'/><category term='Linux'/><category term='Pessoal'/><category term='HTML'/><category term='Web Standard'/><category term='Códigos'/><category term='sideBar'/><category term='DHTML'/><category term='Ruby on Rails'/><category term='JavaScript'/><category term='Cotidiano'/><category term='Notas'/><title type='text'>Coisas De Web</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://coisasdeweb.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://coisasdeweb.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>ramon</name><uri>http://www.blogger.com/profile/04392282785585991989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>55</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-489365202656835633.post-6675274145802387220</id><published>2009-03-12T11:38:00.002-03:00</published><updated>2009-03-12T11:40:54.712-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dicas'/><title type='text'>Url Amigáveis</title><content type='html'>Estou no fast-post, Achei um link que explica como fazer urls amigávei, muito interessante, estou passando para vocês:&lt;br /&gt;&lt;a href="http://forum.imasters.uol.com.br/index.php?showtopic=203965&amp;st=0"&gt;URL amigável&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Fuiii...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/489365202656835633-6675274145802387220?l=coisasdeweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coisasdeweb.blogspot.com/feeds/6675274145802387220/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=489365202656835633&amp;postID=6675274145802387220' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/6675274145802387220'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/6675274145802387220'/><link rel='alternate' type='text/html' href='http://coisasdeweb.blogspot.com/2009/03/url-amigaveis.html' title='Url Amigáveis'/><author><name>ramon</name><uri>http://www.blogger.com/profile/04392282785585991989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-489365202656835633.post-35077827483986488</id><published>2009-01-16T11:09:00.001-03:00</published><updated>2009-01-16T11:09:49.763-03:00</updated><title type='text'>Ate mais</title><content type='html'>Olá amigos e amigas,&lt;br /&gt;&lt;br /&gt;(Música triste ao fundo)&lt;br /&gt;&lt;br /&gt;É com grande pesar no coração, finalizo as atividades por aqui. A partir de hoje, o que vos escreves não mais o fará (gastei todo o meu portuga, espero que não tenha escrito errado). Foi bom enquanto durou, ou não, coloquei alguns códigos que com certeza servirá pra muita gente e pra mim também, inclusive. Porém por diversos motivos, não vou dar continuidade à isso. Pode não parecer, mas gosto muito de blogar, porém meus dotes literários não me deixam fazer algo legal, por isso resolvi dar uma parada, quem sabe um lampejo de talento brote em mim mais tarde e consiga voltar para esse mundo de blogs.&lt;br /&gt;&lt;br /&gt;Enfim, isso é um 'até logo'. Tenho um blog antigo, que tenho bastante carinho por ele, estou pensando em escrever lá, quem quiser: 'Que me siga os bons'.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;endereço blog antigo: www.gigasolucoes.wordpress.com&lt;br /&gt;&lt;br /&gt;Fuiii...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/489365202656835633-35077827483986488?l=coisasdeweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coisasdeweb.blogspot.com/feeds/35077827483986488/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=489365202656835633&amp;postID=35077827483986488' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/35077827483986488'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/35077827483986488'/><link rel='alternate' type='text/html' href='http://coisasdeweb.blogspot.com/2009/01/ate-mais.html' title='Ate mais'/><author><name>ramon</name><uri>http://www.blogger.com/profile/04392282785585991989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-489365202656835633.post-5487810174592882902</id><published>2008-12-31T09:13:00.002-03:00</published><updated>2008-12-31T09:21:57.581-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='Dicas'/><title type='text'>Permitir apenas numeros na caixa de texto</title><content type='html'>Último post do ano, não que esse ano tenha aparecido aqui muitas vezes, mas a proposta do próximo ano é melhorar o meu desempenho, no entanto vamos lá à uma função bem simples de restringir caracteres na caixa de texto, no meu caso estava restringindo os caracteres alfanuméricos, existem várias funções, por aí, até melhores que essa, mas para eu não ter que ficar catando futuramente, resolvi postar aqui:&lt;br /&gt;&lt;br /&gt;function onlyNumbers(e){&lt;br /&gt;/**&lt;br /&gt; * Autor: Ramon Silva &lt;ramon_silvaa@yahoo.com.br&gt;&lt;br /&gt; * Data: 31/12/2008&lt;br /&gt; * Versão: 1.0&lt;br /&gt; */&lt;br /&gt;&lt;br /&gt;  keynum = (window.event) ? e.keyCode : e.which;&lt;br /&gt;  keychar = String.fromCharCode(keynum);&lt;br /&gt;    if (isNaN(keychar) &amp;&amp; &lt;br /&gt;      (keynum &lt; 96 || keynum &gt; 105) &amp;&amp; &lt;br /&gt;         keynum != 8 &amp;&amp; keynum != 37 &amp;&amp; keynum != 39) {&lt;br /&gt;       return false;&lt;br /&gt;    } else {&lt;br /&gt;      return true;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Para usar é só chamar essa função no keydown, da caixa de texto desejada:&lt;br /&gt;&lt;br /&gt;$("#txtCep").keydown(function(e){&lt;br /&gt;  return onlyNumbers(e);&lt;br /&gt;});&lt;br /&gt;&lt;br /&gt;Essa função permite utilizar, as setas também.&lt;br /&gt;&lt;br /&gt;FELIZ 2009 À TODOS!!!!!!!!!!!!!!!!&lt;br /&gt;&lt;br /&gt;Agora vou nessa pegar um pouco de engarrafamento pra chegar à Copacabana "O melhor ano novo do mundo" (Adoro esses títulos, melhor alguma coisa do mundo. rs)&lt;br /&gt;Fuiii...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/489365202656835633-5487810174592882902?l=coisasdeweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coisasdeweb.blogspot.com/feeds/5487810174592882902/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=489365202656835633&amp;postID=5487810174592882902' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/5487810174592882902'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/5487810174592882902'/><link rel='alternate' type='text/html' href='http://coisasdeweb.blogspot.com/2008/12/permitir-apenas-numeros-na-caixa-de.html' title='Permitir apenas numeros na caixa de texto'/><author><name>ramon</name><uri>http://www.blogger.com/profile/04392282785585991989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-489365202656835633.post-5244102775214595826</id><published>2008-11-23T10:53:00.002-03:00</published><updated>2008-11-23T10:56:41.757-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='codes'/><title type='text'>Accordion use a vontade</title><content type='html'>Accordion é a onda do momento, utilizei alguns, mas os que utilizei não me davam liberdade para customização. Então resolvi fazer o meu accordion que atendessem as minhas necessidades. &lt;br /&gt;Acredito que esteja bem simples de ser utilizado, então coloquei no ar, se alguém precisar já pode utilizar, portanto que deixe os créditos. Críticas e sugestões é só enviar &lt;br /&gt;Para utilizar são necessários as seguintes etapas:&lt;br /&gt;&lt;br /&gt;1: Linkar a lib jQuery e o código accordion.&lt;br /&gt;2: Criar o html respeitando algumas seguintes regras.&lt;br /&gt;    &lt;ul&gt;&lt;br /&gt;     &lt;li&gt;Um elemento global com um id&lt;/li&gt;&lt;br /&gt;     &lt;li&gt;Um elemento com a classe box&lt;/li&gt;&lt;br /&gt;     &lt;li&gt;Dentro do box os seguintes elementos&lt;/li&gt;&lt;br /&gt;     &lt;ul&gt;&lt;br /&gt;      &lt;li&gt;um elemento com a classe header&lt;/li&gt;&lt;br /&gt;      &lt;li&gt;um elemento com a classe content&lt;/li&gt;&lt;br /&gt;     &lt;/ul&gt;&lt;br /&gt;    &lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;3: Instanciar o accordion, para instanciá-lo, basta passar um json com as configurações desejadas.&lt;br /&gt;var pars = {&lt;br /&gt;    id : 'accordion1', &lt;br /&gt;    time : 500, &lt;br /&gt;    index : 2,&lt;br /&gt;    openIt : function(that){&lt;br /&gt;       &amp;nbsp;&amp;nbsp;//configuração da forma desejada&lt;br /&gt;       &amp;nbsp;&amp;nbsp;$(that).find(".seta img").attr("src", "seta_amarela_cima.png");&lt;br /&gt;      }, &lt;br /&gt;    closeOthers : function(that){&lt;br /&gt;        &amp;nbsp;&amp;nbsp;//configuração da forma desejada&lt;br /&gt;        &amp;nbsp;&amp;nbsp;$(that).find(".seta img").attr("src", "seta_amarela_baixo.png");&lt;br /&gt;       }&lt;br /&gt;       //id do elemento global (obrigatorio)&lt;br /&gt;       // tempo de execução da animação (obrigatorio)&lt;br /&gt;       // Se quiser configurar qual item do accordion começará expandido, é só enviar o número. Lembre-se, o indice começa de 0&lt;br /&gt;       // Quando elemento expandir, se quiser alguma configuração especial essa é a função, por parâmetro é passado o elemento box&lt;br /&gt;       // Quando os elementos fecham, se quiser alguma configuração especial essa é a função, por parâmetro é passado o elemento box&lt;br /&gt;      &lt;br /&gt;      accordion(pars);&lt;br /&gt; &lt;br /&gt; No json da passagem do parâmetro apenas dois itens são obrigatórios, o id do accordion e o tempo da animação todos os outros, são de acordo com a sua vontade.&lt;br /&gt; &lt;br /&gt;Exemplo de uso:&lt;br /&gt;&lt;br /&gt;&amp;lt;div id='accordion'&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;div class='box'&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div class='header'&amp;gt;Titulo do box&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div class='content'&amp;gt;Conteudo da caixa do accordion&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;div class='box'&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div class='header'&amp;gt;Titulo do box 2&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div class='content'&amp;gt;Conteudo da caixa do accordion 2&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;accordion({id : 'accordion1', time : 500});&lt;br /&gt;&lt;br /&gt;O link do código que disponlizei encontra-se &lt;a href="http://coisasdeweb.meuphpgratis.com.br/accordion/"&gt;aqui&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Fuiii...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/489365202656835633-5244102775214595826?l=coisasdeweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coisasdeweb.blogspot.com/feeds/5244102775214595826/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=489365202656835633&amp;postID=5244102775214595826' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/5244102775214595826'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/5244102775214595826'/><link rel='alternate' type='text/html' href='http://coisasdeweb.blogspot.com/2008/11/accordion-use-vontade.html' title='Accordion use a vontade'/><author><name>ramon</name><uri>http://www.blogger.com/profile/04392282785585991989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-489365202656835633.post-6212429160713892781</id><published>2008-11-17T20:23:00.003-03:00</published><updated>2008-11-20T12:12:22.304-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='jQuery'/><title type='text'>JQuery uma ferramenta essencial</title><content type='html'>Yeah, I'm still alive!&lt;br /&gt;&lt;br /&gt;Ultimamente, está faltando disposição para continuar postando, com tantas tarefas, acabo deixando o blog para depois e esse depois nunca chega, um pouco dessa falta de disposição é que estou querendo mudar um pouco, esse negócio de ficar escrevendo sempre, não está mais me satisfazendo, estou procurando uma forma diferente, não sei se entro no mundo dos podcast, videocast, ou seja lá o que for.&lt;br /&gt;&lt;br /&gt;Hoje, vou reforçar algo que está mais do que reforçado no mundo dos blogs.&lt;a href="http://www.jquery.com"&gt;JQuery&lt;/a&gt;, nunca gostei muito da idéia de usar essas libs, na verdade, não usava, pois queria aprendendo colocando a "mão na massa" sozinho e depois sim, quando me achasse apto, escolher uma dessas bibliotecas-que-fazem-tudo. Enfim, não sei se essa é a melhor maneira de aprender, mas posso dizer que aprendi bastante assim. JQuery, é magnífico vai desde seletores, até pequenas animações que são muito simples de serem usadas. O que mais me conquista nessa lib é a simplicidade, pra mim quanto mais simples melhor e falando em simplicidade não consigo imaginar nada melhor que JQuery.&lt;br /&gt;&lt;br /&gt;Aqui vai uma lista de 5 coisas que adoro em JQuery:&lt;br /&gt;&lt;br /&gt;&amp;bull; &lt;span style="font-weight:bold;"&gt;atributos&lt;/span&gt; do tipo height, que teoricamente, seria necessário duas funções uma de &lt;span style="font-style:italic;"&gt;get&lt;/span&gt; outra pra &lt;span style="font-style:italic;"&gt;set&lt;/span&gt;. Utiliza apenas uma função o que define se é set ou get, é a passagem de parâmetro, se passar parâmetro é set, senão é get.&lt;br /&gt;&lt;br /&gt;&amp;bull; Os &lt;span style="font-weight:bold;"&gt;seletores css&lt;/span&gt;, por causa deles não sou mais obrigado a colocar id em todos os elementos, é possível encontrar elementos nas páginas de forma fácil e eficiente.&lt;br /&gt;&lt;br /&gt;&amp;bull; As funções &lt;span style="font-weight:bold;"&gt;hover&lt;/span&gt;(&lt;span style="font-style:italic;"&gt;over, out&lt;/span&gt;) e &lt;span style="font-weight:bold;"&gt;toggle&lt;/span&gt;(&lt;span style="font-style:italic;"&gt;fn, fn&lt;/span&gt;), no primeiro caso, você adiciona o evento de over e out de um elemento de uma forma muito simples e no segundo caso (o qual uso muito), serve para quando um elemento com o evento click possui duas ações diferentes. Por Exemplo, É o caso do interruptor (o botão possui dois estados, ligado e desligado, normalmente)&lt;br /&gt;&lt;br /&gt;&amp;bull; E a última, porém não menos importante, são os efeitos que é possível aplicar: &lt;span style="font-style:italic;"&gt;show, hide, slideUp, slideDown&lt;/span&gt;. Para mim, a melhor é &lt;span style="font-weight:bold;"&gt;animate&lt;/span&gt;. Pois, com essa função você aplica os efeitos que você quiser da forma que quiser, uso muito essa função. Antes, do jquery demorava um pouco, para fazer qualquer tipo de animação, agora não demoro mais do que dois minutos.&lt;br /&gt;&lt;br /&gt;Enfim, jQuery para mim é uma biblioteca completa, apesar de muitos não concordarem com isso. A documentação é muito bem explicada, apesar de ser em inglês. E se fosse você e não utiliza jQuery, começaria agora a estudar, muitas empresas, pelo menos aqui no Rio, já estão pedindo conhecimento nessa lib.&lt;br /&gt;&lt;br /&gt;Fuiii&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/489365202656835633-6212429160713892781?l=coisasdeweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coisasdeweb.blogspot.com/feeds/6212429160713892781/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=489365202656835633&amp;postID=6212429160713892781' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/6212429160713892781'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/6212429160713892781'/><link rel='alternate' type='text/html' href='http://coisasdeweb.blogspot.com/2008/11/jquery-uma-ferramenta-essencial.html' title='JQuery uma ferramenta essencial'/><author><name>ramon</name><uri>http://www.blogger.com/profile/04392282785585991989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-489365202656835633.post-2590627436086205606</id><published>2008-08-16T11:59:00.002-03:00</published><updated>2008-08-16T12:16:58.543-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IEfix'/><category scheme='http://www.blogger.com/atom/ns#' term='Dicas'/><title type='text'>Exibir imagem de fundo da tr no Internet Explorer</title><content type='html'>Aqui vai uma dica legal, um dia desses estava montando uma página quando me deparei com um &lt;br /&gt;&lt;br /&gt;problema:&lt;br /&gt;&lt;br /&gt;Construi a seguinte &lt;strong&gt;tabela&lt;/strong&gt; para exibir &lt;strong&gt; dados tabulares&lt;/strong&gt;.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;table&amp;gt;&lt;br /&gt; &amp;lt;thead&amp;gt;&lt;br /&gt;  &amp;lt;tr&amp;gt;&lt;br /&gt;   &amp;lt;td&amp;gt;Titulo 1&amp;lt;/td&amp;gt;&lt;br /&gt;   &amp;lt;td&amp;gt;Titulo 2&amp;lt;/td&amp;gt;&lt;br /&gt;   &amp;lt;td&amp;gt;Titulo 3&amp;lt;/td&amp;gt;&lt;br /&gt;   &amp;lt;td&amp;gt;Titulo 4&amp;lt;/td&amp;gt;&lt;br /&gt;  &amp;lt;/tr&amp;gt;&lt;br /&gt; &amp;lt;/thead&amp;gt;&lt;br /&gt; &amp;lt;tbody&amp;gt;&lt;br /&gt;  &amp;lt;tr&amp;gt;&lt;br /&gt;   &amp;lt;td&amp;gt;ln1 col1&amp;lt;/td&amp;gt;&lt;br /&gt;   &amp;lt;td&amp;gt;ln1 col2&amp;lt;/td&amp;gt;&lt;br /&gt;   &amp;lt;td&amp;gt;ln1 col3&amp;lt;/td&amp;gt;&lt;br /&gt;   &amp;lt;td&amp;gt;ln1 col4&amp;lt;/td&amp;gt;&lt;br /&gt;  &amp;lt;/tr&amp;gt;&lt;br /&gt;  &amp;lt;tr&amp;gt;&lt;br /&gt;   &amp;lt;td&amp;gt;ln2 col1&amp;lt;/td&amp;gt;&lt;br /&gt;   &amp;lt;td&amp;gt;ln2 col2&amp;lt;/td&amp;gt;&lt;br /&gt;   &amp;lt;td&amp;gt;ln2 col3&amp;lt;/td&amp;gt;&lt;br /&gt;   &amp;lt;td&amp;gt;ln2 col4&amp;lt;/td&amp;gt;&lt;br /&gt;  &amp;lt;/tr&amp;gt;&lt;br /&gt; &amp;lt;/tbody&amp;gt;&lt;br /&gt; &amp;lt;tr&amp;gt;&lt;br /&gt;&amp;lt;/table&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Agora estilizando a linha da tabela:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;tr { background:transparent url("images/imgLinha.png") no-repeat; }&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;O estilo acima não existe mistério, ou pelo menos assim eu pensava, para cada linha da &lt;br /&gt;&lt;br /&gt;tabela mandei o css carregar a imagem imgLinha.png como background, só que aí está o &lt;br /&gt;&lt;br /&gt;problema, pois por algum motivo que desconheço o IEca não renderiza a imagem pela linha &lt;br /&gt;&lt;br /&gt;(tr) e sim pela coluna (td), ou seja, para cada coluna repetia o background não fazendo o &lt;br /&gt;&lt;br /&gt;efeito desejado, como não sou burro (não ria), logo pensei: Se em cada coluna repete o &lt;br /&gt;&lt;br /&gt;background, definirei o background da coluna como transparente e pronto.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;td { background:transparent; }&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Só que o IEca cada vez mais me surpreende, simplesmente com o código acima some o &lt;br /&gt;&lt;br /&gt;background. Depois de muita pesquisa, encontrei a solução, que é a seguinte:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;td { background-position:expression(-this.offsetLeft); }&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Com essa expressão, você consegue exibir o background da linha.Achei legal colocar isso &lt;br /&gt;&lt;br /&gt;aqui, pois não achei um site em português que tivesse a solução e a considero bem útil.&lt;br /&gt;&lt;br /&gt;Fuiii...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/489365202656835633-2590627436086205606?l=coisasdeweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coisasdeweb.blogspot.com/feeds/2590627436086205606/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=489365202656835633&amp;postID=2590627436086205606' title='8 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/2590627436086205606'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/2590627436086205606'/><link rel='alternate' type='text/html' href='http://coisasdeweb.blogspot.com/2008/08/exibir-imagem-de-fundo-da-tr-no.html' title='Exibir imagem de fundo da tr no Internet Explorer'/><author><name>ramon</name><uri>http://www.blogger.com/profile/04392282785585991989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-489365202656835633.post-5829838675401186956</id><published>2008-06-05T07:15:00.001-03:00</published><updated>2008-11-20T12:13:21.914-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Injection'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>SQL In jection - Parte I</title><content type='html'>Estou começando à estudar um pouco mais sobre &lt;strong&gt;SQL Injection, Code Injection etc&lt;/strong&gt;, esses conhecimentos são de suma importância para todos os desenvolvedores, pois com medidas básicas de segurança, é possível evitar muitos ataques, claro que se quer evitar todos é necessário um estudo aprofundado e ainda assim não está 100% seguro, pois sempre se arranja um modo de burlar a segurança, a dica é sempre estudar sobre o assunto. Esse é um tema, que você pode usar para o bem ou para o mal e abordarei o tema para tentar se prevenir e não para o uso maléfico, é como eu sempre digo: “Sua cabeça é seu guia”, então ao invés de tentar prejudicar os outros, vamos nos beneficiar com essas informações.&lt;br /&gt;&lt;br /&gt;Bom, no tópico de hoje abordaremos um erro que é cometido aos montes por aí, é o de autenticação no site, um SQL &lt;strong&gt;inofensivo&lt;/strong&gt; como esse, pode dar-lhe muita dor de cabeça:&lt;br /&gt;&lt;br /&gt;Obs: Nos exemplos utilizarei como código de programação PHP e banco de dados MySQL.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;$sql = “SELECT  * &lt;br /&gt;                FROM  logaUsuario &lt;br /&gt;             WHERE  login = ‘$login’ AND senha = ‘$senha’“;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Aposto que você já fez um esquema de login parecido com esses muitas vezes (confesso, eu também), pois bem, uma pessoa com um mínimo de conhecimento de SQL Injection consegue entrar no seu sistema com muita facilidade, como sabemos na tabela-verdade, o AND para se ter um resultado verdadeiro é necessário que as duas partes das sentenças sejam verdadeiras, já no OR se apenas um sentença for verdadeira o resultado é verdade, agora que temos essa informação bem definida, vamos alterar um pouco o sql de cima:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;$sql = “SELECT  * &lt;br /&gt;                FROM  logaUsuario &lt;br /&gt;             WHERE  login = ‘$login’ &lt;strong&gt;OR ‘1’=’1’&lt;/strong&gt; AND senha = ‘$senha’ &lt;strong&gt;OR ‘1’=’1’&lt;/strong&gt;“;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Após cada um dos testes (login e senha) adicionei um &lt;strong&gt;OR ‘1’=’1’&lt;/strong&gt;, ou seja, se login for igual à um login cadastrado no banco de dados ou 1=1 ( o que temos certeza que é verdade) e senha repetindo o mesmo processo, obteremos sempre uma consulta que retornará resultado. Você deve estar se perguntando agora como adicionar esse OR na consulta, pois bem:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;No input de login, colocar a seguinte expressão: ‘ OR ‘1’=’1&lt;/li&gt;&lt;br /&gt;&lt;li&gt; No input de senha, colocar a seguinte expressão: ‘ OR ‘1’=’1&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Com isso você já consegue retornar todos os valores da tabela logaUsuario. Mas vamos supor que depois desse sql o desenvolvedor fez um teste que somente se logará no sistema se a pesquisa retornar apenas um linha, e esse teste sendo feito pela função mysql_num_rows, bom para isso o procedimento é bem parecido, agora só temos que limitar para que o sql nos retorne apenas uma linha e para fazermos isso:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;No input de login, colocar a seguinte expressão: ‘ OR ‘1’=’1&lt;/li&gt;&lt;br /&gt;&lt;li&gt;No input de senha, colocar a seguinte expressão: ‘ OR ‘1’=’1’ LIMIT 1 --&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Adicionei um LIMIT 1 e o -- (comentário no MySql), precisa-se coloca-lo para ignorar a última aspas que sobrou. Com esses dois passos bem simples, muita gente consegue entrar em um sistema de login. Com essas alterações o sql ficou dessa forma:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;$sql = “SELECT  * &lt;br /&gt;                FROM  logaUsuario &lt;br /&gt;             WHERE  login = ‘$login’ &lt;strong&gt;OR ‘1’=’1’&lt;/strong&gt; AND senha = ‘$senha’ &lt;strong&gt;OR ‘1’=’1’ LIMIT 1 --‘&lt;/strong&gt;“;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Com uma medida muito mais simples você pode tirar essa falha do sistema. O grande causador desse estrago foram as aspas, pois através dela o atacante consegue abrir e fechar uma string e adicionar o código que ele quiser em seu sql. Para evitar esse problema, utilize a função nativa do php &lt;a href="http://www.php.net/addslashes" target=”_blank”&gt;addslashes()&lt;/a&gt; na variáveis, para você que não usa php essa função adiciona ‘\’ (slash) antes de todas as aspas da sua string, agora o atacante não consegue adicionar código malicioso no seu sql.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;$login = addslashes($login);&lt;br /&gt;$senha = addslashes($senha);&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Espero que saiba usar essas informações de forma inteligente e sem tentar prejudicar os outros. Senão aparecer muitos ataques por aí de sql injections, eu apareço com mais informações sobre o assunto. XD  &lt;br /&gt;Saiba isso é apenas o começo.&lt;br /&gt;&lt;br /&gt;That’s all Folks!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/489365202656835633-5829838675401186956?l=coisasdeweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coisasdeweb.blogspot.com/feeds/5829838675401186956/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=489365202656835633&amp;postID=5829838675401186956' title='3 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/5829838675401186956'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/5829838675401186956'/><link rel='alternate' type='text/html' href='http://coisasdeweb.blogspot.com/2008/06/sql-in-jection-parte-i.html' title='SQL In jection - Parte I'/><author><name>ramon</name><uri>http://www.blogger.com/profile/04392282785585991989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-489365202656835633.post-7626353037501427517</id><published>2008-05-11T18:31:00.002-03:00</published><updated>2008-11-20T12:14:01.940-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cotidiano'/><title type='text'>ELPI e EWD - RJ</title><content type='html'>Nessa semana participei de dois eventos que ocorreram no RJ e falarei um pouquinho de cada um, mas como diria Jack Stripador, ‘Vamos por partes!’.&lt;br /&gt;&lt;br /&gt;Na segunda-feira respondi um desafio no &lt;a href="http://www.tableless.com.br/elpi-problema-5" &gt;Tableless&lt;/a&gt; e ganhei uma par de ingressos para a &lt;a href="https://www.locaweb.com.br/encontro/Default.asp"&gt;10° ELPI&lt;/a&gt; (evento que ocorreu na quarta-feira). Este foi o primeiro ELPI em que estive e posso assegurar que será o primeiro de muitos, excelente o evento, a localização, o espaço e a organização foram ótimas, sem contar com as palestras que foram exemplares. Nesse evento, pra mim, teve os seguintes destaques.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;Coffee break&lt;/strong&gt;, Aquilo sim que é um coffee break de respeito, muito bom, a comida é infinita, acaba nunca&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;As mulheres da plaquinha&lt;/strong&gt;, só tinha modelo, perfeitas&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;Palestra da microsoft&lt;/strong&gt;, essa palestra teve dois pontos altos: um – foi a aparesentação em si, a forma em que foi apresentada, achei interessante, só não conto, pois se você for, vai perder a graça e o outro ponto: o palestrante se negava à todo custo falar a palavra ‘google’, inacreditável.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;Palestra do Elcio&lt;/strong&gt;, ela já era especial antes de começar, pois estava lá por causa do convite dele, mas independente disso, palestra extremamente interessante e o mais incrível é a habilidade dele no VIM, quem já mexeu com linux, sabe o quanto aquilo é chato e vendo-o desenvolver, parece que é simplório, fiquei impressionado com a destreza dele.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Convite que ganhei na &lt;a href="http://forum.ievolutionweb.com/index.php?showtopic=20835&amp;hl=" &gt;webly&lt;/a&gt; e aconteceu hoje, infelizmente tive que sair antes do término, evento bacana também, apesar de não ser muito a minha área, mas é sempre bom estar nesse meio, gosto desses encontros, conhecer gente nova, trocar conhecimentos, ganhar canetas ...&lt;br /&gt;&lt;br /&gt;Enfim, essa semana foi bem agitada, eventos super-legais, se algum desses passar na sua cidade, recomendo-os.&lt;br /&gt;&lt;br /&gt;Fuiii...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/489365202656835633-7626353037501427517?l=coisasdeweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coisasdeweb.blogspot.com/feeds/7626353037501427517/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=489365202656835633&amp;postID=7626353037501427517' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/7626353037501427517'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/7626353037501427517'/><link rel='alternate' type='text/html' href='http://coisasdeweb.blogspot.com/2008/05/elpi-e-ewd-rj_11.html' title='ELPI e EWD - RJ'/><author><name>ramon</name><uri>http://www.blogger.com/profile/04392282785585991989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-489365202656835633.post-6614442457027625580</id><published>2008-04-05T17:28:00.007-03:00</published><updated>2008-04-05T18:19:47.475-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='Códigos'/><category scheme='http://www.blogger.com/atom/ns#' term='Dicas'/><title type='text'>Nao propagar a opacidade aos elementos filhos</title><content type='html'>Após um longo tempo, aqui estou eu.&lt;br /&gt;&lt;br /&gt;Você provavelmente já fez uso da propriedade de opacidade (filter, opacity, -moz-opacity), portanto sabe que todos os elementos filhos do qual você adicionou opacity, herdam o valor dessa propriedade, pois bem outro dia estava desenvolvendo e não queria que o valor da opacidade fosse herdado para os seus filhos, fui ao oráculo (leia-se: google), para tentar resolver esse problema pelo css, pesquisei um pouco e nada encontrei, pelo que pesquisei não é possível impedir essa hereditariedade. Como não tinha muito tempo fiz um script para resolver o problema, é o script que está logo abaixo, porém se você sabe uma forma de impedir essa hereditariedade a dica será muito bem-vinda, pois o código foi a maneira mais prática que encontrei.&lt;br /&gt;&lt;br /&gt;Código:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;function fundoTransparente ( node, trans, props ){&lt;br /&gt;/**&lt;br /&gt;* Criado por Ramon&lt;br /&gt;* www.coisasdeweb.blogspot.com&lt;br /&gt;**/&lt;br /&gt; node = ( typeof(node) == "string" ) ? document.getElementById( node ) : node; //Se veio apenas o id, pegarei o nó &lt;br /&gt;  var newNode = node.cloneNode(false); //Macaco de imitação&lt;br /&gt;  var opacity = node.style.opacity; //Grau de opacidade&lt;br /&gt;  opacity = opacity || node.style.MozOpacity || 1; //Grau de opacidade&lt;br /&gt; trans = trans || opacity*100; //Transparência que eu quero&lt;br /&gt;  with (newNode.style) { //Configurando o nó&lt;br /&gt;   filter = "alpha(opacity=" + trans + ")";&lt;br /&gt;   MozOpacity = trans / 100;&lt;br /&gt; opacity = trans / 100;&lt;br /&gt; position = "absolute";&lt;br /&gt; top = 0 + "px";&lt;br /&gt; left = 0 + "px";&lt;br /&gt;  }&lt;br /&gt; &lt;br /&gt;  newNode.id += "bg"; //Modifico o id do clonado, para id + bg&lt;br /&gt;&lt;br /&gt;  node.appendChild( newNode ); //Vamos pra árvore DOM.&lt;br /&gt;  node.style.opacity = 1;&lt;br /&gt;  node.style.MozOpacity = 1;&lt;br /&gt;  node.style.background = "none";&lt;br /&gt; &lt;br /&gt; if ( typeof(props) == "undefined" ) return;&lt;br /&gt; &lt;br /&gt; for (var i in props){ &lt;br /&gt;  node.style[ props[i] ] = "none"; //Propriedades recebem o valor none&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;A função é bem simples, recebe 3 parâmetros:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;Nó ou id, vc escolhe.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Transparência que você quer (escala de 0 à 100). Opcional&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Propriedades (tipo array) que receberão valor none, para o elemento que têm o alpha possa dar o efeito esperado. Por padrão, o background recebe none (para dar o efeito de opacidade).&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Para utiliza-lá, basta fazer a chamada dessa forma:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt; fundoTransparente("fundo", 40); //Id&lt;br /&gt;&lt;br /&gt; //Ou&lt;br /&gt;&lt;br /&gt;fundoTransparente(document.getElementById('fundo'), 40); //Elemento&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;O segundo parâmetro referente ao grau de opacidade, funciona da seguinte forma:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;Se você não passá-lo, a função vai procurar no css do elemento se a propriedade opacity possui algum valor, se possuir esse vai ser o grau de opacidade ( se estiver usando o FF, a função também consegue pegar o valor de –moz-opacity)&lt;/li&gt;&lt;br /&gt;&lt;br /&gt; &lt;li&gt;Se passar o parâmetro, é o valor que prevalecerá sobre os demais.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Espero que gostem, pois para mim está sendo bem útil essa função, agora com uma linha no javascript, não tenho mais problemas de opacidade ser herdada.&lt;br /&gt;&lt;br /&gt;Fuiii...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/489365202656835633-6614442457027625580?l=coisasdeweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coisasdeweb.blogspot.com/feeds/6614442457027625580/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=489365202656835633&amp;postID=6614442457027625580' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/6614442457027625580'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/6614442457027625580'/><link rel='alternate' type='text/html' href='http://coisasdeweb.blogspot.com/2008/04/nao-propagar-opacidade-aos-elementos.html' title='Nao propagar a opacidade aos elementos filhos'/><author><name>ramon</name><uri>http://www.blogger.com/profile/04392282785585991989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-489365202656835633.post-201179997476770579</id><published>2008-03-07T21:19:00.002-03:00</published><updated>2008-03-07T21:25:10.114-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='Gadget'/><category scheme='http://www.blogger.com/atom/ns#' term='sideBar'/><title type='text'>Construindo um gadget</title><content type='html'>Como prometido, aqui estou eu para falar um pouco de como construir um gadget.&lt;br /&gt;Aqui está o &lt;a href="http://www.sykey.net/2007/02/08/windows-sidebar-no-windows-xp/comment-page-6/" target="_blank"&gt;link&lt;/a&gt; de como fazer a instalação da side-bar que não é o escopo desse post.&lt;br /&gt;Vai lá instalar que eu te espero...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Construir um gadget se assemelha à desenvolver uma página web, com algumas configurações especiais das quais falarei, agora.&lt;br /&gt;&lt;br /&gt;Antes de tudo, desenvolva o seu ambiente de desenvolvimento.&lt;br /&gt;Na pasta &lt;strong&gt;Gadgets&lt;/strong&gt; que se encontra dentro da pasta &lt;strong&gt;Windows Sidebar&lt;/strong&gt;, crie uma pasta com o nome do seu gadget com o final .gadget (ex: meuGadget.gadget)&lt;br /&gt;&lt;br /&gt;Obs: O .gadget na pasta é obrigatório, senão o windows não consegue identificar o seu gadget.&lt;br /&gt;&lt;br /&gt;Pasta criada, teremos agora que desenvolver um arquivo XML contendo as informações básicas do seu gadget.&lt;br /&gt;&lt;br /&gt;Código:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;&amp;lt;gadget&amp;gt;&lt;br /&gt;  &amp;lt;name&amp;gt;olaRio&amp;lt;/name&amp;gt;&lt;br /&gt;  &amp;lt;namespace&amp;gt;&amp;lt;/namespace&amp;gt;&lt;br /&gt;  &amp;lt;version&amp;gt;1.0.0.0&amp;lt;/version&amp;gt;&lt;br /&gt;  &amp;lt;author name="Ramon Silva"&amp;gt;&lt;br /&gt;      &amp;lt;info url=" http://coisasdeweb.blogpot.com" text=" http://coisasdeweb.blogpot.com"/&amp;gt;&lt;br /&gt;      &amp;lt;logo src="logo.png"/&amp;gt;&lt;br /&gt;  &amp;lt;/author&amp;gt;&lt;br /&gt;  &amp;lt;copyright&amp;gt;&amp;lt;/copyright&amp;gt;&lt;br /&gt;  &amp;lt;description&amp;gt;Exemplo de criacao de um gadget&amp;lt;/description&amp;gt;&lt;br /&gt;  &amp;lt;icons&amp;gt;&lt;br /&gt;    &amp;lt;icon height="48" width="48" src="logo.png" /&amp;gt;&lt;br /&gt;  &amp;lt;/icons&amp;gt;&lt;br /&gt;  &amp;lt;hosts&amp;gt;&lt;br /&gt;    &amp;lt;host name="sidebar"&amp;gt;&lt;br /&gt;      &amp;lt;base type="html" apiVersion="1.0.0" src="pagina.html"/&amp;gt;&lt;br /&gt;      &amp;lt;permissions&amp;gt;full&amp;lt;/permissions&amp;gt;&lt;br /&gt;      &amp;lt;platform minPlatformVersion="1.0"/&amp;gt;&lt;br /&gt;      &amp;lt;defaultImage src="logo.png" /&amp;gt;&lt;br /&gt;    &amp;lt;/host&amp;gt;&lt;br /&gt;  &amp;lt;/hosts&amp;gt;&lt;br /&gt;&amp;lt;/gadget&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Explicando:&lt;br /&gt;Tag name                -&gt; Nome que aparece na lista de gadgets.&lt;br /&gt;&lt;br /&gt;Tag author              -&gt; Informações sobre o autordo gadget.&lt;br /&gt;&lt;br /&gt;Tag copyright           -&gt; Informações de direitos autorais.&lt;br /&gt;&lt;br /&gt;Tag description         -&gt; descrição do gadget.&lt;br /&gt;&lt;br /&gt;Tag icon                -&gt; Imagem que será exibido na lista de gadgets.&lt;br /&gt; &lt;br /&gt;Tag host name="sidebar" -&gt; Tag obrigatória e não pode ser alterados os valores&lt;br /&gt;&lt;br /&gt;Tag base                -&gt; A propriedade src é a responsável por setar a página principal do seu gadget&lt;br /&gt; &lt;br /&gt;Configurado o ambiente, agora é só se divertir.&lt;br /&gt;HTML:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt; &amp;lt;head&amp;gt;&lt;br /&gt;  &amp;lt;title&amp;gt;Primeiro gadget&amp;lt;/title&amp;gt;&lt;br /&gt; &amp;lt;/head&amp;gt;&lt;br /&gt; &amp;lt;body style="background:#ddd;width:130px;height:67px"&amp;gt;&lt;br /&gt;  &amp;lt;marquee&amp;gt;&amp;lt;p&amp;gt;Olá Rio!!! :)&amp;lt;/p&amp;gt;&amp;lt;/marquee&amp;gt;&lt;br /&gt; &amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;É possível fazer uns gadgets bem interessantes, essa side-bar que o Windows implementou no Vista, já foi implementado há muito tempo no Linux (distribuição Kurumin) e acho uma idéia sensacional. Ainda mais agora que posso fazer o meu gadget.&lt;br /&gt;&lt;br /&gt;Obs1: Com os gadgets, é possível uma interação interessante com o SO, ainda estou estudando, mas assim que dominar algumas mais, dou uma passada por aqui. ;)&lt;br /&gt;Obs2: Muita gente que conheco pronúncia gadget de forma errônea, então aqui vai uma dica: A pronúncia correta do gadget é &lt;i&gt;gedjiet&lt;/i&gt; (desculpeme a ignorância, não sei escrever aqueles símbolos de pronúncias).&lt;br /&gt;&lt;br /&gt;Fuiii...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/489365202656835633-201179997476770579?l=coisasdeweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coisasdeweb.blogspot.com/feeds/201179997476770579/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=489365202656835633&amp;postID=201179997476770579' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/201179997476770579'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/201179997476770579'/><link rel='alternate' type='text/html' href='http://coisasdeweb.blogspot.com/2008/03/construindo-um-gadget.html' title='Construindo um gadget'/><author><name>ramon</name><uri>http://www.blogger.com/profile/04392282785585991989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-489365202656835633.post-7769727017389550083</id><published>2008-02-23T19:15:00.003-03:00</published><updated>2008-02-23T20:21:48.412-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='voceSabia'/><category scheme='http://www.blogger.com/atom/ns#' term='IEfix'/><title type='text'>Limite de arquivos css</title><content type='html'>Oi galera!&lt;br /&gt;&lt;br /&gt;Bom, estou bastante atarefado ai tive uma folguinha e resolvi dar uma passada por aqui. &lt;br /&gt;&lt;br /&gt;Esse post será o primeiro da categoria voceSabia, como todos os "você sabia" existentes por aí, são curiosidades que muitas das vezes não trazem informações muito úteis para as nossas vidas, mas nós (pelo menos eu) adoramos ler. Espero que goste.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;&lt;strong&gt; Você Sabia ? &lt;/strong&gt;&lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;...que o IEca têm limite de arquivos suportados para as tags &lt;em&gt;&lt; link &gt;&lt;/em&gt;?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Isso mesmo, o IEca possui um limite de 30 arquivos linkados com a tag link, passando esse limite, simplesmente ignora os arquivos subseqüêntes, provavelmente você nunca  chegará à esse limite e se chegar, há uma grande possibilidade de você ter que rever  seu projeto, pois há algo errado, mas pode ser também que seja necessário o uso de todos esses arquivos, nesse caso é preciso usar:&lt;br /&gt;&lt;br /&gt;Código:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;...&lt;br /&gt;&lt; style &gt;&lt;br /&gt;@ import(enderecoDoArquivo);&lt;br /&gt;&lt; /style &gt;&lt;br /&gt;...&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;No próximo post, mostrarei como construir um gadget (a sidebar do Windows Vista) utilizando HTML, Javascript e XML.&lt;br /&gt;&lt;br /&gt;Fuiii...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/489365202656835633-7769727017389550083?l=coisasdeweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coisasdeweb.blogspot.com/feeds/7769727017389550083/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=489365202656835633&amp;postID=7769727017389550083' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/7769727017389550083'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/7769727017389550083'/><link rel='alternate' type='text/html' href='http://coisasdeweb.blogspot.com/2008/02/limite-de-arquivos-css.html' title='Limite de arquivos css'/><author><name>ramon</name><uri>http://www.blogger.com/profile/04392282785585991989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-489365202656835633.post-5039943122188741611</id><published>2008-01-09T11:17:00.000-03:00</published><updated>2008-01-16T12:26:42.450-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><title type='text'>Inspecionando propriedades com o watch</title><content type='html'>Vamos nessa que o tempo ruge e a sapucaí é grande!&lt;br /&gt;Cada vez que leio um pouco mais sobre desenvolvimento, mas eu vejo que tenho que estudar, isso de certa forma é bom, pois nunca haverá alguém bom o suficiente que não tenha o que aprender é aquela velha frase "Estudar (Ler) é um universo em desencanto", agora que viajamos um pouco voltaremos ao tema. Essa função &lt;em&gt;watch&lt;/em&gt;, é muito interessante e não vejo muita gente comentando sobre ela por aí, então resolvi trazer esse assunto. Tomará que para você seja inédito o uso dela, pois fiquei super empolgando quando descobri a &lt;em&gt;engine&lt;/em&gt; da coisa.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;strong&gt;Watch&lt;/strong&gt;&lt;/center&gt;&lt;br /&gt;&lt;em&gt;Definição:&lt;/em&gt; Executa uma função específica quando é atribuído um valor à propriedade observada.&lt;br /&gt;&lt;em&gt;Sintaxe:&lt;/em&gt; &lt;em&gt;instObj&lt;/em&gt;.&lt;strong&gt;watch&lt;/strong&gt;(propriedade, função);&lt;br /&gt;  Obs: a propriedade fica entre aspas dupla (").&lt;br /&gt;&lt;br /&gt;No final das contas, ele funciona como um debugador.&lt;br /&gt;&lt;br /&gt;Código: &lt;br /&gt;&lt;code&gt;&lt;br /&gt;  objeto = {propriedade:"funciona ?"}&lt;br /&gt;  objeto.watch("propriedade", handler);&lt;br /&gt;&lt;br /&gt;  function handler (id, velhoVal, novoVal) { &lt;br /&gt;    //Confirmo se o usuário quer receber o novo valor da propriedade, senão continua com o mesmo valor.&lt;br /&gt;    return (confirm("objeto."+id+" era"+velhoVal+" agora é "+novoVal+". Deseja receber o novo valor?"))?document.write(novoVal): document.write(velhoVal);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  objeto.propriedade = "Claro que sim";&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Explicando o código acima:&lt;br /&gt;linha 1 -&gt; Crio um objeto, no qual a propriedade recebe o valor (funciona?)&lt;br /&gt;linha 2 -&gt; Mando o javascript &lt;strong&gt;inspecionar&lt;/strong&gt; a propriedade (propriedade) do objeto (objeto) chamando a função handler.&lt;br /&gt;linha 3 -&gt; a função handler, como pode-se observar possui 3 parâmetros (id, velhoVal, novoVal), são parâmetros padrão e não é possível passar outros parâmetros à essa função (até onde eu sei, pelo menos), onde estes por sua vez são:&lt;br /&gt;          . id       -&gt; Identificação da propriedade que é inspecionada.&lt;br /&gt;          . velhoVal -&gt; O valor antigo da propriedade.&lt;br /&gt;          . novoVal  -&gt; O valor novo da propriedade.&lt;br /&gt;          Obs: Manter a ordem dos parâmetros.&lt;br /&gt;linha 4 -&gt; Texto de exibição&lt;br /&gt;linha 5 -&gt; Essa linha é importante, é o valor que a propriedade irá conter, se você não der um retorno para essa função a propriedade vai ter o valor undefined. Com esse &lt;em&gt;watch&lt;/em&gt; pode-se atribuir qualquer valor de retorno à essa propriedade. Chocante né?!&lt;br /&gt;&lt;br /&gt;linha última -&gt; Troco o valor da propriedade para o handler ser executado.&lt;br /&gt;&lt;br /&gt;Todos os objetos, descendem essa função.&lt;br /&gt;&lt;br /&gt;Mais uma coisa, se você não quiser mais "inspecionar" a propriedade usa a função &lt;em&gt;unwatch&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt;Usando o mesmo exemplo.&lt;br /&gt;Código:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;objeto.unwatch("propriedade");&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Divirtam-se, pois achei isso o máximo&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;[UPDATE]&lt;/strong&gt;&lt;br /&gt;   Na linha do retorno do novo valor, pus um document.write para exibir apenas o valor da variável, dessa forma é possível visualizar toda a operação&lt;br /&gt;   Como observado pelo Micox, o IEca não dá suporte à essa propriedade&lt;br /&gt;&lt;strong&gt;[/UPDATE]&lt;/strong&gt;&lt;br /&gt;Fuiii...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/489365202656835633-5039943122188741611?l=coisasdeweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coisasdeweb.blogspot.com/feeds/5039943122188741611/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=489365202656835633&amp;postID=5039943122188741611' title='3 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/5039943122188741611'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/5039943122188741611'/><link rel='alternate' type='text/html' href='http://coisasdeweb.blogspot.com/2008/01/inspecionando-propriedades-com-o-watch.html' title='Inspecionando propriedades com o watch'/><author><name>ramon</name><uri>http://www.blogger.com/profile/04392282785585991989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-489365202656835633.post-1462192479692263969</id><published>2008-01-03T11:18:00.000-03:00</published><updated>2008-01-03T11:19:43.869-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='Dicas'/><category scheme='http://www.blogger.com/atom/ns#' term='DHTML'/><title type='text'>Desabilitar o menu do botao direito do mouse</title><content type='html'>Mais um post fast-fast!&lt;br /&gt;Essa dica é bem massa, se você usa o Yahoo!Mail, já percebeu que ao clicar com o botão direito, o menu exibido não é o do browser e sim do próprio Yahoo!, o menu do browser está desabilitado. Então vamos nessa:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;document.oncontextmenu = function () {&lt;br /&gt;  alert("Menu do browser desabilitado");&lt;br /&gt;  return false;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Divirta-se!&lt;br /&gt;&lt;br /&gt;Fuiii...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/489365202656835633-1462192479692263969?l=coisasdeweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coisasdeweb.blogspot.com/feeds/1462192479692263969/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=489365202656835633&amp;postID=1462192479692263969' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/1462192479692263969'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/1462192479692263969'/><link rel='alternate' type='text/html' href='http://coisasdeweb.blogspot.com/2008/01/desabilitar-o-menu-do-botao-direito-do.html' title='Desabilitar o menu do botao direito do mouse'/><author><name>ramon</name><uri>http://www.blogger.com/profile/04392282785585991989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-489365202656835633.post-4483043120136457426</id><published>2008-01-02T11:41:00.000-03:00</published><updated>2008-01-02T11:42:27.512-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='Dicas'/><category scheme='http://www.blogger.com/atom/ns#' term='DHTML'/><title type='text'>Desabilitar o selecionar texto do mouse</title><content type='html'>Algumas vezes não queremos que em nossas páginas o "selecionar texto" do mouse fique habilitado, aqui vai uma dica legal pra quem quer desabilitá-lo, infelizmente acredito que não funcione em todos os browsers, testei apenas no IEca e no FF e funfou perfeitamente, quem quiser testar em outro browser, sinta-se à vontade e comente aqui se funcionou. XD&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;  if (typeof document.onselectstart!="undefined") //IEca&lt;br /&gt;    document.onselectstart=function(){return false}&lt;br /&gt;  else  //FF&lt;br /&gt;    document.body.style.MozUserSelect = "none";&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;  O FF não possui a propriedade onselectstart, o que achei estranho, e o IEca possui.&lt;br /&gt;  O FF possui a propriedade MozUserSelect, que pertence apenas à ele.&lt;br /&gt;  Não tenho certeza se a propriedade onselectstart é suportada por outros browsers.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Fuiii...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/489365202656835633-4483043120136457426?l=coisasdeweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coisasdeweb.blogspot.com/feeds/4483043120136457426/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=489365202656835633&amp;postID=4483043120136457426' title='3 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/4483043120136457426'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/4483043120136457426'/><link rel='alternate' type='text/html' href='http://coisasdeweb.blogspot.com/2008/01/desabilitar-o-selecionar-texto-do-mouse.html' title='Desabilitar o selecionar texto do mouse'/><author><name>ramon</name><uri>http://www.blogger.com/profile/04392282785585991989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-489365202656835633.post-910040397740366519</id><published>2007-12-30T12:11:00.000-03:00</published><updated>2007-12-30T12:12:11.661-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='DOM'/><category scheme='http://www.blogger.com/atom/ns#' term='DHTML'/><title type='text'>InsertBefore e appendChild</title><content type='html'>Último post do ano! :)&lt;br /&gt;Como prometido iremos falar sobre appendChild e insertBefore. Bom, já sabemos que appendChild e insertBefore, não é inclusão do elemento na estrutura html e sim a re-alocação. Os dois possuem apenas essa função, porém funcionam de forma diferentes.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;strong&gt;insertBefore&lt;/strong&gt;&lt;/center&gt;&lt;br /&gt;Aloca um elemento no nó pai, anteriormente do elemento selecionado.&lt;br /&gt;&lt;br /&gt;Sintaxe:&lt;br /&gt;elemento.insertBefore(elemento_a_ser_alocado, elemento_guia);&lt;br /&gt;&lt;br /&gt;Ex:&lt;br /&gt;document.getElementById("meuElemento").insertBefore(document.createElement("DIV"), document.getElementById("elementGuia"));&lt;br /&gt;&lt;br /&gt;No exemplo acima, o elemento DIV irá ser adicionado antes do elementoGuia.&lt;br /&gt;&lt;br /&gt;Obs.:&lt;br /&gt;Para essa alocação funcionar o elementoGuia, tem que ser filho (direto) do elemento (meuElemento), ou seja, não pode ter nenhum elemento entre elementoGuia e meuElemento.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;strong&gt;appendChild&lt;/strong&gt;&lt;/center&gt;&lt;br /&gt;Aloca um elemento no último filho do elemento selecionado.&lt;br /&gt;&lt;br /&gt;Sintaxe:&lt;br /&gt;elemento.appendChild(elemento_a_ser_alocado);&lt;br /&gt;&lt;br /&gt;Ex:&lt;br /&gt;document.getElementById("meuElemento").appendChild(document.createElement("DIV"));&lt;br /&gt;&lt;br /&gt;No exemplo acima adicionei a DIV após o último filho do elemento meuElemento, sendo assim, a DIV passa a ser o último filho do elemento meuElemento.&lt;br /&gt;&lt;br /&gt;Considero esses conceitos de vitais importância para quem está iniciando o estudo de DHTML, ísso é só o início, com outros conceitos, você verá que é possível ser feito muito mais coisas interessantes com essas propriedades que falei hoje.&lt;br /&gt;&lt;br /&gt;Então é isso, Um próspero ano novo à todos.&lt;br /&gt;&lt;br /&gt;Fuiii...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/489365202656835633-910040397740366519?l=coisasdeweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coisasdeweb.blogspot.com/feeds/910040397740366519/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=489365202656835633&amp;postID=910040397740366519' title='3 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/910040397740366519'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/910040397740366519'/><link rel='alternate' type='text/html' href='http://coisasdeweb.blogspot.com/2007/12/insertbefore-e-appendchild.html' title='InsertBefore e appendChild'/><author><name>ramon</name><uri>http://www.blogger.com/profile/04392282785585991989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-489365202656835633.post-7783589606665869440</id><published>2007-12-20T12:00:00.000-03:00</published><updated>2007-12-20T12:01:39.393-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='DOM'/><category scheme='http://www.blogger.com/atom/ns#' term='Dicas'/><category scheme='http://www.blogger.com/atom/ns#' term='DHTML'/><title type='text'>Criando e deslocando elementos DOM</title><content type='html'>Depois de muito tempo, estou de volta!&lt;br /&gt;Hoje vou falar de uma dica, que muitos irão achar idiota, outros não. Esses lances de DOM, são muito massa né?! Só que eu sou meio burrinho (rs). Enfim, é algo bem simples, porém nunca tinha me dado conta o quão simples era. Em DOM têm-se o comando:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;meuElem = document.createElement("elemento");&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;O comando acima, cria um elemento html, porém em todos os exemplos que vi na internet até hoje, esse comando era seguido disso:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;document.getElementById("meuElemento").appendChild(meuElem);&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;OU&lt;br /&gt;&lt;code&gt;&lt;br /&gt;document.getElementById("meuElemento").insertBefore(meuElem, document.getElementById("meuElemento").lastChild);&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Sempre interpretei que os códigos acimas, "cria-se" um elemento dentro do elemento com id de meuElemento, não tinha dúvidas quanto à esse conceito. Porém, ledo engano meu caro, o elemento já tinha sido criado, portanto nesses dois códigos acima, só foram feitos os "deslocamentos" dos elementos. Pensando dessa forma, um monte de coisas que tinha grande dificuldade de fazer, pois se tornavam extensos, podem ser feitos bem rápidos, segue um exemplo muito bom:&lt;br /&gt;&lt;br /&gt;Você tem uma aplicação que em um determinado momento, dependendo da iteração com o usuário, o mesmo pega um elemento que é filho de um "pai" e muda de lugar, acarretando na mudança de pai. O que eu um méris mortal fazia?&lt;br /&gt;&lt;br /&gt;Sempre soube que a propriedade parentNode, era apenas de leitura. =/&lt;br /&gt;Se eu não posso mudar o "pai", só me resta criar um outro elemento com o pai desejado, mas que tenham os mesmos atributos, com isso acarretava de eu usar, um cloneChild com o "pai" diferente e depois fazer um removeChild.&lt;br /&gt;&lt;br /&gt;Viu o trabalhão? Duplico o elemento que eu quero, jogo no pai desejado e excluo o elemento que pertence ao pai que não desejo mais.&lt;br /&gt;&lt;br /&gt;Mas com o conceito que falei anteriormente, Seus problemas acabaram. (com muito mais échio) [Concordo contigo, estou no fundo do poço, citar Casseta &amp; Planeta, ninguém merece]&lt;br /&gt;&lt;br /&gt;Não preciso de mais nada disso, posso resolver o meu problema direto com o appendChild ou insertBefore, como eles não são os responsáveis pela criação do elemento e sim, apenas, pelo "deslocamento", ou seja, desloco o meu elemento para o pai desejado e pronto.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;document.getElementById("newFather").appendChild(document.getElementById("child"));&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Viu? Ficou muito mais simples.&lt;br /&gt;&lt;br /&gt;"Coisas simples devem parecer simples, coisas complexas devem parecer possíveis."&lt;br /&gt;&lt;br /&gt;Obs1: Eu não entrei em maiores detalhes sobre a diferença entre o insertBefore e appendChild, pois esse não era o foco principal desse post, mas em um próximo post, explico com maiores detalhes essas duas propriedades importantíssimas.&lt;br /&gt;&lt;br /&gt;Desejo à todos um ótimo natal e semana que vem estou de volta! (pelo menos, assim espero)&lt;br /&gt;&lt;br /&gt;Fuiii...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/489365202656835633-7783589606665869440?l=coisasdeweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coisasdeweb.blogspot.com/feeds/7783589606665869440/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=489365202656835633&amp;postID=7783589606665869440' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/7783589606665869440'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/7783589606665869440'/><link rel='alternate' type='text/html' href='http://coisasdeweb.blogspot.com/2007/12/criando-e-deslocando-elementos-dom.html' title='Criando e deslocando elementos DOM'/><author><name>ramon</name><uri>http://www.blogger.com/profile/04392282785585991989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-489365202656835633.post-1879342677997578546</id><published>2007-11-06T08:27:00.000-03:00</published><updated>2007-11-06T08:28:30.647-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web Standard'/><category scheme='http://www.blogger.com/atom/ns#' term='W3C'/><title type='text'>Ajax e Doctype</title><content type='html'>Lá no Pinceladas Da Web, tem um &lt;a href="http://www.pinceladasdaweb.com.br/blog/2007/11/06/problemas-com-ajax-e-quirks-mode/" target="_blank"&gt;artigo&lt;/a&gt; muito interessante sobre a questão do doctype junto ao Ajax, sobre os problemas que poderão existir com a implementação, nunca tinha lido uma análise sobre o assunto focando o uso com Ajax, acredito que todos usem DOCTYPE, mas sempre tem um desavisado que ignora.rs&lt;br /&gt;&lt;br /&gt;Aconselho ir lê-lo, também tem o link do &lt;a href="http://swik.net/Ajax/Ajax-Development-Gotchas" target="_blank"&gt;artigo completo&lt;/a&gt; (inglês), muito esclarecedor também.&lt;br /&gt;&lt;br /&gt;Fuiii...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/489365202656835633-1879342677997578546?l=coisasdeweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coisasdeweb.blogspot.com/feeds/1879342677997578546/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=489365202656835633&amp;postID=1879342677997578546' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/1879342677997578546'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/1879342677997578546'/><link rel='alternate' type='text/html' href='http://coisasdeweb.blogspot.com/2007/11/ajax-e-doctype.html' title='Ajax e Doctype'/><author><name>ramon</name><uri>http://www.blogger.com/profile/04392282785585991989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-489365202656835633.post-5961521193240552366</id><published>2007-10-30T08:42:00.000-03:00</published><updated>2007-10-30T08:44:24.750-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cotidiano'/><title type='text'>Sem Assunto</title><content type='html'>Desculpe a minha falta de posts, ultimamente não tenho tempo (mas isso não é desculpa, nesse mundo ninguém tem tempo) e o principal nunca acho um assunto legal, estou totalmente desprovido de criatividade, meu caderninhos de temas para o blog está em branco, então vim dar uma explicação do meu sumiço e assim que eu tiver assuntos interessantes, eu volto pra cá, ou se você tiver alguma dúvida coloca ai que aceito como sugestões e faço um post. XD&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;fuiii...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/489365202656835633-5961521193240552366?l=coisasdeweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coisasdeweb.blogspot.com/feeds/5961521193240552366/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=489365202656835633&amp;postID=5961521193240552366' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/5961521193240552366'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/5961521193240552366'/><link rel='alternate' type='text/html' href='http://coisasdeweb.blogspot.com/2007/10/sem-assunto.html' title='Sem Assunto'/><author><name>ramon</name><uri>http://www.blogger.com/profile/04392282785585991989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-489365202656835633.post-2063226313128510992</id><published>2007-10-18T15:56:00.000-03:00</published><updated>2008-12-09T14:10:23.870-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Pessoal'/><category scheme='http://www.blogger.com/atom/ns#' term='Cotidiano'/><title type='text'>E mais um bacuri chega entre nós</title><content type='html'>Vamos à um post totalmente "off-topic", ou seja, hoje vou falar de algo extremamente pessoal, se você não está afim de ler sobre um pouco da minha vida, aconselho parar a leitura por aqui.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tjma9lu_caQ/Rxewjw9om0I/AAAAAAAAAAM/nh0AXyUiRaM/s1600-h/eu+e+preto.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_tjma9lu_caQ/Rxewjw9om0I/AAAAAAAAAAM/nh0AXyUiRaM/s320/eu+e+preto.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5122757229642554178" /&gt;&lt;/a&gt;&lt;br /&gt;Hoje nasceu o filho do meu amigo (leia-se:irmão) Preto (não sou racista, é porque assim ele gosta de ser chamado), em situações assim que pensamos (nascimentos, são bom motivos pra pensar) em um flashback de nossas vidas e lembro do dia que conheci-o (claro que isso é força de expressão, nem lembro do que eu comi hoje no almoço), não gostava muito dele era verdade, pois ele era da turma rival, sabe como que é quinta-série, porém ele tinha dois pontos positivos.&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Era o único maluco que fazia os cursos de informática que eu fazia.=p&lt;/li&gt;&lt;br /&gt;&lt;li&gt; Conhecia bastante garotas, isso era "cool"&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Nunca tive muito sucesso com as garotas, então ele era um bom ícone, ai fui aprendendo um truque aqui, outro acolá e agora superei o "professor", ele é quem me pede as aulas agora, enfim tanta coisa passamos juntos nesse nosso pequeno tempo de convivência (8 anos), tantas brigas XD. Estou tão feliz de ter um amigo pai, porque agora eu posso fazer aqueles tipos de piadinhas "você tá feliz?Imagina o pai.", "fez o filho agora assuma. Disso você entende", entre outros.&lt;br /&gt;&lt;br /&gt;Estou muito feliz por você Preto, que Deus ilumine a sua vida e a do seu filho, tudo de bom pra ti, brother.&lt;br /&gt;&lt;br /&gt;ps: Esqueci de mencionar, nessa foto aí em cima, o cara da esqueda sou eu e o da direita é o Preto (nessa foto sabe-se, porque ele tem esse apelido. XD)&lt;br /&gt;ps2: Depois de ler esse texto, achei que ele ficou meio boiola, por isso quero deixar bem explícito que eu não sou boiola hein.&lt;br /&gt;&lt;br /&gt;fuiii...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/489365202656835633-2063226313128510992?l=coisasdeweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coisasdeweb.blogspot.com/feeds/2063226313128510992/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=489365202656835633&amp;postID=2063226313128510992' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/2063226313128510992'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/2063226313128510992'/><link rel='alternate' type='text/html' href='http://coisasdeweb.blogspot.com/2007/10/e-mais-um-bacuri-chega-entre-ns.html' title='E mais um bacuri chega entre nós'/><author><name>ramon</name><uri>http://www.blogger.com/profile/04392282785585991989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_tjma9lu_caQ/Rxewjw9om0I/AAAAAAAAAAM/nh0AXyUiRaM/s72-c/eu+e+preto.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-489365202656835633.post-4110708552368076659</id><published>2007-10-10T23:22:00.000-03:00</published><updated>2007-10-11T10:18:40.896-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IEfix'/><title type='text'>Mais um que resolve a sobreposicao do elemento select no IE</title><content type='html'>Eu sei que a Microsoft é a empresa que as pessoas amam odiar (que incoerência não?!), basta ela pisar um pouco na bola que todos reclamam (inclusive eu), porém há situações que você não pode ter outro sentimento senão ódio por tal empresa. Na minha opinião o pior produto da Microsoft é o Internet Explorer, o qual eu humildimente chamo-o de IEca, ele é o responsável por minhas maiores dores de cabeças no trabalho (e algumas vezes, fora também), é um hackzinho aqui, uma outra "regra" de validação que não obedece e por aí vai. Há muito eu tinha o conhecimento, que mais hora ou menos hora, iria me deparar com o problema da tag select. O quê?!, você não conhece esse problema? Sorte a sua, mas vou te explicar. O elemento &amp;lt;select&amp;gt; simplesmente aparece por cima de todos os outros elementos HTML, que até à uma hora atrás isso pra mim era inexplicável, na verda a explicação é, se me permitem, escrota, mas foi a explicação que li no próprio site da microsoft. Como diria Jack Estripador, vamos por partes.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Procurei uma explicação plausível no &lt;a href="http://support.microsoft.com/kb/177378" target="_blank"&gt;site&lt;/a&gt; da microsoft o porquê do select sobrepor todos os outros elementos.&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Lá explica-se que há duas categorias de elementos: windowed e windowless.&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;O Problema&lt;/strong&gt;, o elemento select é um windowed e todos os outros são windowless, ou seja, eu não posso comparar um zIndex de um elemento windowed contra um windowless, pois eles não se entendem o.O (Após ler isso, respirei fundo e me perguntei, por que meu Deus?! Qual é o sentido de todos os elementos serem windowless e o select ser um windowed? Pra mim, isso não faz sentido algum e pra você?, se fizer, por favor, me informa) passado o momento de choque, continuo a leitura da página até o final.&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Na página eles mencionam algo que pode ser (na realidade é) a solução do problema:&lt;br /&gt;&lt;br /&gt;"This leaves the SELECT element as the only element that is windowed. If you use the preceding code to run the page in Internet Explorer 5.5, when you set the z-index of the SELECT element to a value that is greater than 5, it draws on top of the IFRAME. When you set the z-index of the SELECT element to a value that is less than 5, the IFRAME overlaps it, even though they are both windowless elements."&lt;br /&gt;&lt;br /&gt;Vale lembrar que a explicação acima é a partir do IEca 5.5, pois abaixo disso o iframe é considerado um elemento windowed. Pra você que não saca muito de inglês o texto acima fala basicamente que...&lt;br /&gt;&lt;br /&gt;"O Iframe é um (talvez o único) elemento que consegue sobrepor o elemento select, quando este por sua vez tiver um z-index maior, ou for renderizado (construído) depois."&lt;br /&gt;&lt;br /&gt;Claro que o texto não foi traduzido, apenas escrevi a idéia que o texto dá.&lt;br /&gt;&lt;br /&gt;- Poxa legal, mas agora ficou uma dúvida, você não disse que elementos windowed não conseguem comparar z-index de elementos windowless? Então como é que o iframe (elemento: windowless) consegue ficar na frente do &amp;lt;select&amp;gt; (elemento:windowed)&lt;br /&gt;-Pois é... Mas aí a microsoft me sai com essa pérola.&lt;br /&gt;&lt;br /&gt;"This is what makes the IFRAME unique: it follows z-index with respect to windowless elements, and it supports z-index with respect to windowed elements like the SELECT element in this case."&lt;br /&gt;&lt;br /&gt;Tradução livre (põe livre nisso)&lt;br /&gt;"Isto é que faz o IFRAME único ele consegue respeitar os dois z-indexes sem problemas."&lt;br /&gt;&lt;br /&gt;Ou seja, depois disso só podemos chegar à uma conclusão: Erro de implementação. Pois a única explicação que obtive para o IFRAME ter essa característica "única" é que anteriormente ele era windowed e agora é windowless, por consequência (off: pena que ninguém mais usa trema, gostava tanto delas) herdou as características de um elemento windowed.&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Apelar pra aquele que tudo-sabe (leia-se:Google)&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Solução:&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Achei &lt;a href="http://shepherdweb.com/2007/02/14/z-index-ignored-for-select-element-in-ie-6-workaround/" target="_blank"&gt;essa&lt;/a&gt; página e lá contém 3 soluções, porém só usei uma e funcionou de acordo, nem testei as outras. &lt;br /&gt;&lt;br /&gt;Na div que vai ficar em cima do select, inclui-se um iframe recebendo as características css a seguir:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;iframe {&lt;br /&gt;display:none;/*sorry for IE5*/&lt;br /&gt;display/**/:block;/*sorry for IE5*/&lt;br /&gt;position:absolute;/*must have*/&lt;br /&gt;z-index:-1;/*must have*/&lt;br /&gt;filter:mask();/*must have*/&lt;br /&gt;width: 100%;/*must have for any big value*/&lt;br /&gt;height: 100%;/*must have for any big value*/;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;e no html:&lt;br /&gt;&lt;code&gt;&lt;br /&gt; &amp;lt;div&amp;gt;&lt;br /&gt;&amp;lt;!--[if IE]&amp;gt;&amp;lt;iframe&amp;gt;&amp;lt;/iframe&amp;gt;&amp;lt;![endif]--&amp;gt;&lt;br /&gt;// O comentário acima o IE lê (só ele mesmo pra ler comentário) e só cria o iframe se for o IE.&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;e Shazam, agora a sua div fica por cima do select.&lt;br /&gt;&lt;br /&gt;Espero que ajude muita gente, pois pra mim foi uma ajuda e tanta, tentei aqui colocar o conceito todo até chegar no resultado final, pois não vi muito disso por aí, as pessoas só colocam o código, mas não explica todo o desenvolvimento do raciocínio.&lt;br /&gt;&lt;br /&gt;Fuiii...&lt;br /&gt;&lt;br /&gt;[UPDATE]&lt;br /&gt;Fiz alguns teste em casa, com essas configurações, mesmo você colocando um número de z-index do select maior que o do iframe, o select estará por baixo do iframe (que no nosso caso, visuaremos a div, pois o iframe está oculto), então está avisado! XD&lt;br /&gt;[/UPDATE]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/489365202656835633-4110708552368076659?l=coisasdeweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coisasdeweb.blogspot.com/feeds/4110708552368076659/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=489365202656835633&amp;postID=4110708552368076659' title='6 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/4110708552368076659'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/4110708552368076659'/><link rel='alternate' type='text/html' href='http://coisasdeweb.blogspot.com/2007/10/mais-um-que-resolve-sobreposicao-do.html' title='Mais um que resolve a sobreposicao do elemento select no IE'/><author><name>ramon</name><uri>http://www.blogger.com/profile/04392282785585991989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-489365202656835633.post-739983727174724229</id><published>2007-10-03T09:55:00.000-03:00</published><updated>2007-10-03T09:59:32.541-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Novidade'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby on Rails'/><title type='text'>Livro Gratis de Ruby On Rails</title><content type='html'>Se você está afim de aprender ruby, assim como eu, essa é uma ótima oportunidade, vi lá no &lt;a href="http://br-linux.org/linux/livro-gratis-de-ruby-on-rails-" target="_blank"&gt;BR-Linux&lt;/a&gt; que o Patrick Lenz, está disponibilizando o livro dele, completo, para download em PDF durante 60 dias. já baixei o meu! XD&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;fuiii...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/489365202656835633-739983727174724229?l=coisasdeweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coisasdeweb.blogspot.com/feeds/739983727174724229/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=489365202656835633&amp;postID=739983727174724229' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/739983727174724229'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/739983727174724229'/><link rel='alternate' type='text/html' href='http://coisasdeweb.blogspot.com/2007/10/livro-gratis-de-ruby-on-rails.html' title='Livro Gratis de Ruby On Rails'/><author><name>ramon</name><uri>http://www.blogger.com/profile/04392282785585991989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-489365202656835633.post-4374518240949665996</id><published>2007-09-29T09:03:00.000-03:00</published><updated>2007-09-29T09:04:42.311-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='Programação'/><category scheme='http://www.blogger.com/atom/ns#' term='Notas'/><category scheme='http://www.blogger.com/atom/ns#' term='Dicas'/><title type='text'>O Operador Ternario</title><content type='html'>Olá navegantes, não sei se vocês já ouviram falar no &lt;strong&gt;operador ternário&lt;/strong&gt;, é algo bem simples, mas que volta e meia esqueço a sintaxe, então resolvi coloca-lá aqui, existe lugar melhor?&lt;br /&gt;Se você não conhece operador ternário é uma forma compacta de fazer um if/else, claro que ele não serve para todo tipo de if/else que você ver por aí (pelo fato dele ser compacto),tem grande serventia para aquele tipo que se testa um valor e dependendo da resposta uma outra variável recebe um ou outro valor. Ex:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;function tipoNum ($num) {&lt;br /&gt; if ($num%2) {&lt;br /&gt;  $tipo = "Número Ímpar";&lt;br /&gt; } else {&lt;br /&gt;  $tipo = "Número Par";&lt;br /&gt; }&lt;br /&gt; return $tipo;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;No código acima nada demais, verifico se o número é par ou ímpar de acordo com o resto da divisão e uma variável recebe o texto dizendo se ele é par ou ímpar.(obs: não sei se você sabe, mas no teste acima verifico se o valor é verdadeiro e não um número, através do resultado da operação que me retorna 0 ou 1, que também é considerado um valor booleano, apesar do resultado ser um número. Sempre que se souber o valor retornado será um dos dois, posso fazer um teste lógico, sabendo que 1 corresponde à true e 0 à false).&lt;br /&gt;&lt;br /&gt;Agora o mesmo código com o operador ternário.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;function tipoNum ($num) {&lt;br /&gt; $tipo = ($num%2) ? "Número Ímpar" : "Número Par";&lt;br /&gt; return $tipo;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Muito mais simples né?! &lt;br /&gt;Nota Mental: &lt;em&gt;Bom, agora já está anotado e quando esquecer a sintaxe é só ir pro meu blog. XD&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;fuiii...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/489365202656835633-4374518240949665996?l=coisasdeweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coisasdeweb.blogspot.com/feeds/4374518240949665996/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=489365202656835633&amp;postID=4374518240949665996' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/4374518240949665996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/4374518240949665996'/><link rel='alternate' type='text/html' href='http://coisasdeweb.blogspot.com/2007/09/o-operador-ternario.html' title='O Operador Ternario'/><author><name>ramon</name><uri>http://www.blogger.com/profile/04392282785585991989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-489365202656835633.post-3716992541662656964</id><published>2007-09-25T11:21:00.000-03:00</published><updated>2007-09-25T11:27:12.985-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='HTML'/><category scheme='http://www.blogger.com/atom/ns#' term='DHTML'/><title type='text'>Inserir Elementos Dinamicamente na tabela</title><content type='html'>Um post rápido, Essa semana tentei fazer algo simples, mas levei um suor pra fazer, mas era algo bem simples de ser resolvido, então você pode estar passando por isso, então aqui venho para esclarecer e até porque se no futuro eu esquecer, posso consultar este blog e ter a resposta XD. Estava, eu fazendo um carregamento dinâmico de uma tabela aqui na empresa, montei a tabela bonitinha e parti para o &lt;a href="http://pt.wikipedia.org/wiki/Dhtml" target="_blank"&gt;DHTML&lt;/a&gt;, para fazer a estrutura da tabela dinâmica, nesta tabela o carregamento se dava de acordo com a necessidade do usuário e era criado as linhas da tabela de forma que o usuário desejar sem e não colocando sempre na última posição, para essa questão simples, fui utilizar a função &lt;em&gt;insertBefore&lt;/em&gt;, para minha surpresa isso retornava o seguinte erro:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Nó não foi encontrado&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Vi, li e reli a minha tabela e não consegui encontrar o erro, a estrutura da minha tabela estava mais-ou-menos assim:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;table id="myTable"&amp;gt;&lt;br /&gt;  &amp;lt;tbody&amp;gt;&lt;br /&gt;    &amp;lt;tr id="row1"&amp;gt;&amp;lt;td&amp;gt;row1col1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; row1col2&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;    &amp;lt;tr id="row2"&amp;gt;&amp;lt;td&amp;gt;row2col1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; row2col2&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;  &amp;lt;/tbody&amp;gt;&lt;br /&gt;&amp;lt;/table&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;e com o seguinte código tentava adicionar uma linha na tabela:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;var newRow = document.createElement('tr');&lt;br /&gt;var row2 = document.getElementById('row2');&lt;br /&gt;var aqui = document.getElementById('myTable').insertBefore(newRow,row2);&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;E nada de dar certo, fui naquele-que-tudo-sabe (leia-se:Google), ainda sim não tinha encontrado uma resposta satisfatória, até que entrei em um site gringo, que tinha um código muito semelhante ao meu, só que o dele funcionava! (Mas devo confessar que nem ele mesmo sabia porque estava funcionando, pois ele disse que para resolver o problema era necessário fazer o clone de um elemento, no caso um tr, e depois fazer a inserção, essa informação não procede!) Até que descobri o meu erro, mas antes de escrever onde estava errando, gostaria de perguntar à você, se com as informções acima você consegue saber onde estava errando, gostaria que arriscasse um palpite, não custa nada, ninguém nasceu sabendo, então não leia as linhas abaixo e dê o seu palpite, depois disso volte para ver a resposta. (não vale ver a resposta antes, hein) Estou confiando na sua honestidade. rs&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Que rufem os tambores! Boa Sorte! XD&lt;br /&gt;O erro era que estava tentando fazer a inserção do elemento &lt;em&gt;tr&lt;/em&gt; no elemento &lt;em&gt;table&lt;/em&gt; e não pode ser feito dessa forma, tenho que fazer a inserção no &lt;em&gt;tbody&lt;/em&gt;, ou seja, passei a &lt;em&gt;id&lt;/em&gt; da &lt;em&gt;table&lt;/em&gt;, para &lt;em&gt;tbody&lt;/em&gt;. Uma questão simples de ser resolvida!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;fuiii...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/489365202656835633-3716992541662656964?l=coisasdeweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coisasdeweb.blogspot.com/feeds/3716992541662656964/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=489365202656835633&amp;postID=3716992541662656964' title='3 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/3716992541662656964'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/3716992541662656964'/><link rel='alternate' type='text/html' href='http://coisasdeweb.blogspot.com/2007/09/inserir-elementos-dinamicamente-na.html' title='Inserir Elementos Dinamicamente na tabela'/><author><name>ramon</name><uri>http://www.blogger.com/profile/04392282785585991989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-489365202656835633.post-6758521197194750391</id><published>2007-09-11T10:11:00.000-03:00</published><updated>2007-09-11T10:13:23.237-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='POO'/><category scheme='http://www.blogger.com/atom/ns#' term='Programação'/><title type='text'>This Ou That - Qual Usar</title><content type='html'>Desculpem a demora nos posts, mas minha vida está muito corrida, vários projetos, várias coisas pra fazer e o dia infelizmente só tem 24 hrs. Mas como eu sempre digo (ou pelo menos disse uma vez) Vamos embora que o tempo ruge e a sapucaí é grande.&lt;br /&gt;&lt;br /&gt;Pois bem, gosto muito de Javascript, mas ele tem certas falhas de implementação (ou assim penso), que não são muito legais, hoje iremos falar do problema com a propriedade &lt;em&gt;this&lt;/em&gt;:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;function minhaClasse () {&lt;br /&gt;  this.metodo1 = function() {&lt;br /&gt;    this.meuValor = 5;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  metodo2 = function() {&lt;br /&gt;    return 10;&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Essa é a forma que costumo implementar classes, não que seja a melhor, mas é a forma que gosto de fazer, existem diversas formas, cabe a você, escolher a que mais agradar. Como visto acima, tenho dois métodos:&lt;br /&gt;&lt;br /&gt;Metodo 1: Vê-se que a função tem um this na frente o que significa que o método é público. O método seta a variável &lt;em&gt;meuValor&lt;/em&gt; um valor de 5 essa variável como pode-se observar ela também é publica, this na frente da variável,(fora do objeto, pode-se pegar o valor dela).&lt;br /&gt;&lt;br /&gt;Metodo 2: Essa função não tem o this na frente, ou seja, ela é privada. Quando ela é chamada apenas retorna o valor 10.&lt;br /&gt;&lt;br /&gt;Até aqui, Neves, não tem nada demais, o problema vem agora:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;function minhaClasse () {&lt;br /&gt;  this.metodo1 = function() {&lt;br /&gt;    return 10;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  metodo2 = function() {&lt;br /&gt;    this.meuValor = 5;&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Acima inverti o conteúdo das funções, porém não inverti a "indentidade" (metodo1 -&gt; publico; metodo2 -&gt; privado) e por isso daria erro ("função meuValor não identificada"), pois segundo a especificação da ECMAScript, métodos privados não podem chamar métodos, variáveis, ou seja lá o que for, públicos. Para fazer com que o exemplo acima funcione é necessário utilizar um método privilegiado (detalhes, sobre isso em um próximo post). &lt;br /&gt;&lt;br /&gt;Resolvendo - Irá ser necessário criar uma variável global à classe que irá receber o valor this, que comumente é chamado de that e toda vez que tivermos uma função privada e necessitarmos utilizar algo público, ao invés de usarmos o &lt;em&gt;this&lt;/em&gt;, utilizaremos o &lt;em&gt;that&lt;/em&gt;. Exemplificando, pois com essa explicação até eu me enrolei:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;function minhaClasse () {&lt;br /&gt;  var that = this;&lt;br /&gt;  this.metodo1 = function() {&lt;br /&gt;    return 10;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  metodo2 = function() {&lt;br /&gt;    that.meuValor = 5;&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Com essa simples variável é possível resolver o problema!&lt;br /&gt;&lt;br /&gt;Espero que isso seja útil para alguém, pois para mim foi muito. Vou ver se no próximo post continuo com algo de objeto.&lt;br /&gt;&lt;br /&gt;Fuiii...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/489365202656835633-6758521197194750391?l=coisasdeweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coisasdeweb.blogspot.com/feeds/6758521197194750391/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=489365202656835633&amp;postID=6758521197194750391' title='4 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/6758521197194750391'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/6758521197194750391'/><link rel='alternate' type='text/html' href='http://coisasdeweb.blogspot.com/2007/09/this-ou-that-qual-usar.html' title='This Ou That - Qual Usar'/><author><name>ramon</name><uri>http://www.blogger.com/profile/04392282785585991989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-489365202656835633.post-1226492506033738779</id><published>2007-08-20T09:54:00.000-03:00</published><updated>2007-09-12T14:38:52.942-03:00</updated><title type='text'>Como achar um elemento na pagina</title><content type='html'>Vamos lá que o tempo ruge e a sapucaí é grande. Hoje vamos aprender como se pega a verdadeira posição de um elemento na página. Sabemos que existem as propriedades &lt;em&gt;top, left&lt;/em&gt; que teoricamente permite-nos sabermos onde ele se localiza, mas engano nosso, pois&lt;em&gt;top, left&lt;/em&gt; referenciam apenas a posição em relação ao seu &lt;em&gt;pai&lt;/em&gt; e mesmo assim temos dois problemas:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;É obrigatório a declaração do top e left, porque senão vem como vazio as propriedades.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Nem sempre o que declaramos no top e left, e a posição "real" dele em relação ao seu pai.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Portanto, vemos que as propriedades top e left, não serão de muita serventia, para nossa salvação existem as propriedades &lt;em&gt;offsetTop, offsetLeft&lt;/em&gt; as quais de certa forma nos oferece a posição correta do elemento, logo resolvemos metade do problema, pois essas propriedades oferecem as coordenadas em relação ao seu offsetParent (em cada browser o offsetParent é tratado de forma diferente, dessa vez não é só o IEca que dá problemas), mas ainda sim isso não é um grande problema, pois as propriedades são sempre relativas à seus offsetParent, independente de qual for. Com todas essas informações, já podemos resolver o problema, pois sabemos que o offset nos traz a posição "real" do elemento e é relativo à seu offsetParent, logo precisaremos apenas, percorrer todos os offsetParent deste elemento somando os offsetTop e offsetLeft e voilá.&lt;br /&gt;&lt;br /&gt;Code:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;function pegarPosicao(obj){&lt;br /&gt;    var left = 0;&lt;br /&gt;    var top  = 0;&lt;br /&gt;&lt;br /&gt;    while (obj.offsetParent){&lt;br /&gt;      left  += obj.offsetLeft;&lt;br /&gt;      top  += obj.offsetTop;&lt;br /&gt;      obj    = obj.offsetParent;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    left += obj.offsetLeft;&lt;br /&gt;    top  += obj.offsetTop;&lt;br /&gt;&lt;br /&gt;    return {x:left, y:top};&lt;br /&gt;  }&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;No código acima, pego por parâmetro um objeto qualquer, zero as variáveis que irão ser responsáveis por ter o top e left do objeto, entro no laço de repetição e repito até o objeto não ter offsetParent (podemos entender isso como pai, mas nem sempre ,pra falar q verdade quase nunca, o offsetParent é o "pai" do elemento) e na repetição, somo as propriedades que vão me dar a posição do elemento e o elemento recebe o offsetParent dele. Depois de sair do laço ainda vai ter faltado mais uma repetição, pois o último elemento não tem offsetParent, mas pode ter offsetTop e offsetLeft, então somo esse valor às variáveis e retorno o valor real dele na página.&lt;br /&gt;&lt;br /&gt;Obs: Vale lembrar que as propriedades offset, não podem ser setadas, apenas lidas.&lt;br /&gt;&lt;br /&gt;Espero que tenham gostado.&lt;br /&gt;&lt;br /&gt;Fuiii...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/489365202656835633-1226492506033738779?l=coisasdeweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coisasdeweb.blogspot.com/feeds/1226492506033738779/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=489365202656835633&amp;postID=1226492506033738779' title='3 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/1226492506033738779'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/1226492506033738779'/><link rel='alternate' type='text/html' href='http://coisasdeweb.blogspot.com/2007/08/como-achar-um-elemento-na-pagina.html' title='Como achar um elemento na pagina'/><author><name>ramon</name><uri>http://www.blogger.com/profile/04392282785585991989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-489365202656835633.post-3928946390451047718</id><published>2007-08-04T11:54:00.000-03:00</published><updated>2007-08-04T12:16:30.432-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Cotidiano'/><title type='text'>Como Instalar o Ubuntu 3D</title><content type='html'>Estou me convertendo para o Linux, confesso que de ínicio achei meio estranho, pois sou muito apegado às teclas de atalho (e a tecla windows, principalmente) e também aquelas nomenclaturas KDE, GNOME, não faziam sentido. Mas como disse-m meu amigo orkut (li na sorte de hoje) "The only good is knowledge and the only evil is ignorance". E agora estou na luz. Se tem uma algo que gosto muito, são efeitos visuais, acho fascinante, quando vejo um efeito legal, entro em estado de torpor, por isso sempre tive vontade de mecher no Mac, infelizmente nunca tive uma oportunidade, porém tenho fé nesse feito. Cortando um pouco o blá blá blá. &lt;br /&gt;&lt;br /&gt;Alguns meses atrás fiz um pedido do cd do Ubuntu, estava doido que chegasse em minha casa, porque o ubuntu tem um pacote muito interssante de efeitos visuais e estava doido para testar, depois de perder um monte de dados, 4 formatações e algumas perdas do servidor X (servidor X - é o responsável por fazer a inicialização do ambiente gráfico do Linux), consegui ter a mudança da área de trabalho em 3D ;), se te interessar &lt;a href="http://hamacker.wordpress.com/2007/06/21/compiz-fusion-no-ubuntu-feisty/" target="_blank"&gt;aqui&lt;/a&gt; vai o link da explicação d como instalar o pacote (compiz).&lt;br /&gt;&lt;br /&gt;Fuiii...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/489365202656835633-3928946390451047718?l=coisasdeweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coisasdeweb.blogspot.com/feeds/3928946390451047718/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=489365202656835633&amp;postID=3928946390451047718' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/3928946390451047718'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/3928946390451047718'/><link rel='alternate' type='text/html' href='http://coisasdeweb.blogspot.com/2007/08/como-instalar-o-ubuntu-3d.html' title='Como Instalar o Ubuntu 3D'/><author><name>ramon</name><uri>http://www.blogger.com/profile/04392282785585991989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-489365202656835633.post-4341921670258514072</id><published>2007-07-24T09:45:00.000-03:00</published><updated>2007-07-24T09:56:32.152-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='Dicas'/><category scheme='http://www.blogger.com/atom/ns#' term='HTML'/><title type='text'>Upload no PHP</title><content type='html'>Entrei em período de férias por isso que estou meio sumido e o pan também está gastando muito do meu tempo, adoro esportes, apesar de não praticá-los muito. rs&lt;br /&gt;Olá galerinha, hoje vamos ver como se faz upload de arquivos no php, é molezinha.&lt;br /&gt;&lt;br /&gt;Arquivo HTML:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;form enctype="multipart/form-data" action="/upload.php" method="POST"&amp;gt;&lt;br /&gt;    &amp;lt;label for = "arqUsuario"&amp;gt;Imagem&amp;lt;/label&amp;gt;&lt;br /&gt;    &amp;lt;input name="arqUsuario" type="file" /&amp;gt;&lt;br /&gt;    &amp;lt;input type="hidden" name="MAX_FILE_SIZE" value="3000000" /&amp;gt;&lt;br /&gt;    &amp;lt;input type="submit" value="Send File" /&amp;gt;&lt;br /&gt;&amp;lt;/form&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;O "tipo" do formulário tem que ser &lt;em&gt;multipart/form-data&lt;/em&gt;, para fazer o upload lá no servidor.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Um input do &lt;strong&gt;tipo file&lt;/strong&gt;, responsavel por armazenar o endereço do arquivo na máquina do usuário, junto com ele vem um botão, que no FF o value é Browser, para procurar o arquivo, sem precisar digitar o endereço, porém não sei como mudar as características desse botão :(.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Um input hidden com &lt;strong&gt; name MAX_FILE_SIZE&lt;/strong&gt;, responsável por indicar o tamanho máximo permitido do arquivo que vai ser feito o upload.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;E é claro um submit para mandar o arquivo ao servidor e o php armazená-lo.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Agora no arquivo php:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;?php&lt;br /&gt;$uploaddir = '/home/meusProjetos/upload/';&lt;br /&gt;$arquivo = $_FILES['arqUsuario'];&lt;br /&gt;$uploadfile = $uploaddir . basename($arquivo['name']);&lt;br /&gt;  if(!eregi("^image\/(pjpeg|jpeg|png|gif|bmp)$", $arquivo["type"])) {&lt;br /&gt;    echo "Arquivo em formato inválido! A imagem deve ser jpg, jpeg, bmp, gif&lt;br /&gt;ou png. Envie outro arquivo";&lt;br /&gt;  } else if($arquivo["size"] &gt; $_POST["MAX_FILE_SIZE"]) {&lt;br /&gt;      echo "Arquivo em tamanho muito grande! Envie outro arquivo";&lt;br /&gt;  } else {&lt;br /&gt;    if (move_uploaded_file($arquivo['tmp_name'], $uploadfile)) {&lt;br /&gt;      echo "Arquivo válido e o upload feito.\n";&lt;br /&gt;      chmod($uploadfile , 0766);&lt;br /&gt;    } else {&lt;br /&gt;      echo "Não foi possivel fazer o upload!\n";&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;?&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Antes de explicar, o código acima existem algumas observações a serem feitas.&lt;br /&gt;&lt;strong&gt;Obs1:&lt;/strong&gt; No phpconfig, tem que estar autorizado o upload de arquivos, e também, deve ser verificado o tamanho máximo de upload, que por padrão é dois megas, dependendo da sua necessidade terá que aumentá-lo.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Obs2:&lt;/strong&gt;Quando a página php, é chamada já foi feito o upload do arquivo, porém ele está em uma pasta temporária, o php só vai ser responsável de mudar o diretório e o nome do arquivo.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;$uploaddir é responsável pelo endereço definitivo do arquivo.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;A variável $arquivo que recebe $_FILES['userfile'], possui todos os valores do arquivo&lt;/li&gt;&lt;br /&gt;&lt;li&gt;$uploadfile terá todo o caminho do arquivo&lt;/li&gt;&lt;br /&gt;&lt;li&gt;no primeiro if é verificado se o tipo do arquivo é diferente à uma imagem dos tipos (pjpeg|jpeg|png|gif|bmp), se for, ele não move o arquivo para uma pasta definitiva.&lt;/li&gt;&lt;br /&gt;&lt;li&gt; A instrução &lt;em&gt;&lt;a href="http://www.php.net/manual/en/function.move-uploaded-file.php" target = "_blank"&gt;move_uploaded_file&lt;/a&gt;&lt;/em&gt; é a responsável por mover o arquivo de um diretório temporário para um definitivo (Oh! não me diga).&lt;/li&gt;&lt;br /&gt;&lt;li&gt;a instrução &lt;a href="http://www.php.net/manual/en/function.chmod.php" target="_blank"&gt;chmod()&lt;/a&gt;, irá trocar as permissões do arquivo, isso se faz necessário, para visualizar e modificar os arquivos, o &lt;strong&gt;0766&lt;/strong&gt; lhe dá permissão de alterar e remover.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Acho que está tudo explicadinho, nos mííííííííínimos detalhes.&lt;br /&gt;&lt;br /&gt;fuiii...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/489365202656835633-4341921670258514072?l=coisasdeweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coisasdeweb.blogspot.com/feeds/4341921670258514072/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=489365202656835633&amp;postID=4341921670258514072' title='6 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/4341921670258514072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/4341921670258514072'/><link rel='alternate' type='text/html' href='http://coisasdeweb.blogspot.com/2007/07/upload-no-php.html' title='Upload no PHP'/><author><name>ramon</name><uri>http://www.blogger.com/profile/04392282785585991989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-489365202656835633.post-6335366301416482695</id><published>2007-07-06T10:07:00.000-03:00</published><updated>2007-07-06T10:15:12.645-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cotidiano'/><title type='text'>SO na Web</title><content type='html'>Meu povo e minha pova, tudo que se possa imaginar tem na internet, mas tem algumas iniciativas que merecem destaque, pois bem a idéia de desenvolver um &lt;acronym title="Sistema Operacional"&gt;SO&lt;/acronym&gt; na web, não é tão inovadora assim, mas &lt;a href="http://eyeos.org/" target="_blank"&gt;essa&lt;/a&gt; aplicação é demais, lembra muito um desktop de verdade, e tem todas as tarefas básicas, incluido um editor de texto, explorer, alguns joguinhos (incluido xadrez no qual estou viciado), para você que desenvolve vale a pena dar uma conferida, porque assim tem-se uma idéia do que é possível fazer, e o melhor de tudo é open-Source, então carpem diem :)&lt;br /&gt;&lt;br /&gt;Bom isso é um bom exemplo da tão famosa "web 2.0", no próximo post vou tentar escrever sobre o que penso sobre esse tema.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://eyeos.org/" target="_blank"&gt;EyeOs&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;fuiii...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/489365202656835633-6335366301416482695?l=coisasdeweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coisasdeweb.blogspot.com/feeds/6335366301416482695/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=489365202656835633&amp;postID=6335366301416482695' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/6335366301416482695'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/6335366301416482695'/><link rel='alternate' type='text/html' href='http://coisasdeweb.blogspot.com/2007/07/so-na-web.html' title='SO na Web'/><author><name>ramon</name><uri>http://www.blogger.com/profile/04392282785585991989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-489365202656835633.post-2599369413392304165</id><published>2007-07-03T10:24:00.000-03:00</published><updated>2007-07-03T20:55:18.090-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IEfix'/><title type='text'>Programando nos Comentarios</title><content type='html'>Isso mesmo que você leu, o IEca (só podia ser ele), te permite programar nos comentários, essa é uma das práticas que uso para resolver problemas de renderização. Tipo float, position, entre outros.&lt;br /&gt;&lt;br /&gt;O IEca como todos sabemos, tenta ao máximo não seguir a recomendações da &lt;a  href="http://pt.wikipedia.org/wiki/W3c" target="_blank"&gt;W3C&lt;/a&gt; e portanto nos traz muitos problemas na hora de exibir o site da forma desejada, ainda bem que para transpassar esse problema existem várias técnicas, como:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Fazer dois css's, um para o IE e outro para o FF, e no javascript fazer a chamada do css correto.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Colocar uns hacks de underline, antes das propriedades.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Colocar as execessões do IE em comentário condicional.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Fica por conta da sua imaginação.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Essas são as três que conheço e considero legais, excluindo a segunda, pois colocando esses hacks o css não valida e é sempre bom tentar validar, infelizmente nem sempre isso é possível :(. Bom, prefiro trabalhar com o desvio condicional (muitas das vezes), pois, normalmente, só tenho que se alterar algumas propriedades, não são todas. Mas em algumas situações a melhor opção é testar o tipo de browser e carregar o css correto para o browser, sem mais lenga-lenga, vou mostrar como é uma estrutura do comentário condicional, agora vê se pode comentário condicional, só rindo mesmo. rs:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;!--[if IE]&amp;gt;&lt;br /&gt;&amp;lt;style&amp;gt;&lt;br /&gt;html {overflow:auto;}&lt;br /&gt;&amp;lt;/style&amp;gt;&lt;br /&gt;&amp;lt;![endif]--&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Ás vezes é necessário especificar a versão do IE, pois a cada versão ele renderiza diferente.&lt;br /&gt;Dentro das tag style, você já sabe, é como se estivesse no css e faz-se as alterações necessárias.&lt;br /&gt;&lt;br /&gt;fuiii...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/489365202656835633-2599369413392304165?l=coisasdeweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coisasdeweb.blogspot.com/feeds/2599369413392304165/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=489365202656835633&amp;postID=2599369413392304165' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/2599369413392304165'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/2599369413392304165'/><link rel='alternate' type='text/html' href='http://coisasdeweb.blogspot.com/2007/07/programando-nos-comentarios.html' title='Programando nos Comentarios'/><author><name>ramon</name><uri>http://www.blogger.com/profile/04392282785585991989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-489365202656835633.post-8061319433567834626</id><published>2007-06-29T10:34:00.000-03:00</published><updated>2007-06-29T19:48:24.953-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>COMMIT e ROLLBACK no SQL</title><content type='html'>Sql é um assunto do qual gosto bastante, então sempre que posso dou uma pincelada no tema. Pois bem, no sql tem duas cláusulas muito interessantes COMMIT e ROLLBACK.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;COMMIT&lt;/strong&gt; - Responsável por efetivar a transação corrente, pois quando se trabalha com um banco de dados em que vários usuários vão utilizá-lo ao mesmo tempo, tem que se efetivar a operação, pois sem o COMMIT a alteração não será visualizada para as outras "sessões", salvo se a sessão em que fez a alteração for fechada, o que por sua vez, traria muitos prejuízos, pois outros usuários iriam trabalhar com um banco de dados desatualizado e podendo até causar redundância de dados.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;ROLLBACK&lt;/strong&gt; - Desfaz a última alteração.&lt;br /&gt;&lt;br /&gt;Quando desenvolvemos um sistema, tentamos fazer todos os tratamentos de erros possíveis, mas não podemos esquecer da astúcia do usuário, ele sempre consegue arranjar um jeito de fazer m... no sistema e descobri um bug que você nem imaginava ser possível, por isso existe os tratamentos de erros e se tratando de um banco de dados essa preocupação tem que triplicar. Como mencionei anteriormente essas duas cláusulas são muito interessantes, ainda mais utilizando &lt;a href="http://pt.wikipedia.org/wiki/Stored_procedure" target="_blank"&gt;Stored Procedure&lt;/a&gt;, Quando se faz uma operação no BD (INSERT, UPDATE, DELETE), este por sua vez retorna se a operação foi ou não bem sucedida. A partir daqui podemos imaginar como podem nos ser úteis as cláusulas. Exemplo:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;SQL&gt;insert into alunos (matricula, nome) values (4, 'Yusuke Urameshi');&lt;br /&gt;&lt;br /&gt;1 row created.&lt;br /&gt;SQL&gt;IF @@ERROR &lt;&gt; 0 ROLLBACK ELSE COMMIT&lt;br /&gt;Commit complete.&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;No código acima verificamos, se a inserção foi bem-sucedida, se for efetiva a inserção no bd, senão desfaz a inserção.&lt;br /&gt;&lt;br /&gt;Agora vem aquele apelo básico, para você comentar.&lt;br /&gt;&lt;br /&gt;Fuiii...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/489365202656835633-8061319433567834626?l=coisasdeweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coisasdeweb.blogspot.com/feeds/8061319433567834626/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=489365202656835633&amp;postID=8061319433567834626' title='10 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/8061319433567834626'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/8061319433567834626'/><link rel='alternate' type='text/html' href='http://coisasdeweb.blogspot.com/2007/06/commit-e-rollback-no-sql.html' title='COMMIT e ROLLBACK no SQL'/><author><name>ramon</name><uri>http://www.blogger.com/profile/04392282785585991989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-489365202656835633.post-7737175243298661654</id><published>2007-06-26T10:06:00.000-03:00</published><updated>2007-06-26T11:50:02.532-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='Web Standard'/><category scheme='http://www.blogger.com/atom/ns#' term='HTML'/><title type='text'>Comportamento Fora Da Estrutura</title><content type='html'>"Verdade é algo temporal e pessoal", essa é a minha versão da verdade, pois de tempos em tempos quando achamos que algo é a verdade absoluta e não tem como mudar, descobrimos que estávamos enganado a respeito disso e nos perguntando como poderiamos ser tão tolos.&lt;br /&gt;&lt;br /&gt;Depois dessa introdução (um tanto quanto, nada haver) vamos ao que interessa, pois bem outro dia estava lendo os meus feeds quando vi &lt;a href="http://refatorandopadroes.jteam.com.br/2007/06/18/separando-javascript-do-html-ate-demais/" target="_blank"&gt;esse&lt;/a&gt; post, lá no Refatorando Padrões. Onde o Carlos afirmava que não concordava com todas as chamadas de funções no javascript, de início achei a idéia absurda e se já não tivesse lido alguns posts dele, com certeza não iria ler o post até o fim, pois para mim, até aquele momento, fazer as chamadas de funções pelo javascript é senso comum.Logo após a leitura do post começou uma pequena discussão (diga-se de passagem, bem proveitosa), onde cada um defendeu o seu ponto de vista e no final das contas ficamos onde começamos, eu defendendo a chamada de funções pelo javascript e ele chamar a função pelo html. Como disse anteriormente, a verdade é algo relativo e cada um tem a sua versão da verdade, dentro de um limite e razões para tal. Agora tentarei defender a minha verdade. Let's Go:&lt;br /&gt;&lt;br /&gt;Chamada da função pelo html:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;      &amp;lt;input type="button" value="botão" id="meuBotao" onclick="meuEventoAqui()" /&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Chamada da função pelo Javascript:&lt;br /&gt;&lt;br /&gt;Arquivo HTML:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;    &amp;lt;input type="button" value="botão" id="meuBotao" /&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Arquivo Javascript:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;window.onload () {&lt;br /&gt;   document.getElementById("meuBotao").onclick = function () {&lt;br /&gt;     meuEventoAqui(); //ou o meu código, não preciso fazer a chamada de outra função posso programar diretamente aqui.&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Olhando esse pequeno trecho, talvez você esteja me achando um louco em pensar que defendo  a forma de atribuir eventos pelo javascript, pois dessa forma gerou 5 linhas à mais no meu código e da forma que o Carlos defende, chamo a função diretamente no evento e pronto problema resolvido! Pois bem, vamos às razões que me levam a preferir chamar pelo javascript:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Chamando todas as funções pelo javascript, não se mistura comportamento com estrutura.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Para fazer a manutenção de código, vc não precisa modificar estruturalmente (html), pois está tudo no javascript e dessa forma não é necessário fazer a mudança de dois arquivos, é necessário apenas a mudança no javascript (o que é mais coerente)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;No final das contas o seu código não irá crescer tanto assim, mas as poucas linhas que geram a mais, com certeza é compensado com a facilidade da manutenabilidade (nem sei se essa palavra existe. rs)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Você pode usar a sua estrutura (html), em várias páginas, pois como só tem a estrutura, sendo necessário apenas trocar o javascript, sem maiores problemas.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Todos os eventos (ou a maioria deles) estarão no window.onload, portanto não é necessário ficar caçando elementos no seu html, para colocar as funções, tudo estará mais organizado para adicionar código, ou mudá-lo&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Porque eu gosto desse jeito, talvez essa seja a mais importante ;).&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Bom, essas são as minhas razões à acreditar que chamando as funções pelo javascript é melhor, mas a verdade não é absoluta e cabe à você decidir isso, então o que proponho é estudar ver as diferenças entre cada forma e escolhe-la, de acordo com a sua necessidade e depois me contar qual foi a escolha e me dizer as razões. Talvez, até possa mudar de opinião.&lt;br /&gt;&lt;br /&gt;fuiii...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/489365202656835633-7737175243298661654?l=coisasdeweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coisasdeweb.blogspot.com/feeds/7737175243298661654/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=489365202656835633&amp;postID=7737175243298661654' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/7737175243298661654'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/7737175243298661654'/><link rel='alternate' type='text/html' href='http://coisasdeweb.blogspot.com/2007/06/comportamento-fora-da-estrutura.html' title='Comportamento Fora Da Estrutura'/><author><name>ramon</name><uri>http://www.blogger.com/profile/04392282785585991989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-489365202656835633.post-6803486721088486591</id><published>2007-06-19T09:23:00.000-03:00</published><updated>2007-06-21T09:50:00.094-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><title type='text'>Função eval()</title><content type='html'>Função extremamente interessante do Javascript e no entanto não vejo ela sendo muito explicada por aí e ela é uma daquelas funções que você sempre precisou, mas vc não sabia disso.&lt;br /&gt;&lt;br /&gt;Definição:&lt;br /&gt;Converte uma string em código JavaScript e executa-o, claro se for um comando válido.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Código:&lt;br /&gt;&lt;code&gt;eval('comando_string')&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Conheci-a há pouco tempo, porém estou apaixonado, ela é uma poderosa ferramenta para códigos bem dinâmicos e códigos que possuam poucos kbs. Vamos à um exemplo de aplicação bem simples e com isso já dá para notar como é legal:&lt;br /&gt;&lt;br /&gt;Tenho um menu com vários itens (Home, Contatos, Portifólio, Fotos, Blog, Quem Somos e por ai vai) esses links são carregado por AJAX e em cada um desses links existe um botão voltar existe uma rotina da chamada de página correspondente (vamos supor também que não conheço a solução do problema de histórico do &lt;a href="http://bermonruf.wordpress.com/2007/06/08/dynamic-history-implementando/" target="_blank"&gt;Bernardo Rufino&lt;/a&gt;, nem a do &lt;a href="http://www.juliogreff.blog.br" target="_blank"&gt;JulioGreff&lt;/a&gt;) e para efetuar essa volta, tive a "brilhante" idéia de quando um item do menu é clicado, armazeno o valor desse item à uma variável, e esta por sua vez só vai armazenar o valor de um item (histórico de um), então quando pressiono o voltar ele testa o valor dessa variável e chama a função correspondente ao item, ou seja, a variável recebe o valor do penúltimo item clicado e carrega a página (penúltimo item, porque o último é o link em que estamos :)), E assim ficou meu código:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;document.getElementById("meubotaovoltar").onclick = function () {&lt;br /&gt;    if (historicode1 == "home") { //historicode1 é minha variável que recebe o valor do último item clicado&lt;br /&gt;       location.href="home.htm"; //faz a chamada da página&lt;br /&gt;    } else if (historicode1 == "contatos") {&lt;br /&gt;       location.href="contatos.htm"&lt;br /&gt;    }&lt;br /&gt;    // E assim sucessivamente...&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Aí em cima nenhum mistério, fiz um teste para cada um dos valores depois faço um &lt;em&gt;location&lt;/em&gt; para a página correspondente.&lt;br /&gt;&lt;br /&gt;Já com o uso do &lt;em&gt;eval()&lt;/em&gt; todas essas linhas são substituídas por apenas uma (pode acreditar). Como disse anteriormente a função &lt;em&gt;eval()&lt;/em&gt; Converte uma string em código JavaScript e executa. Como se pode notar o valor que a variável armazena é similar ao valor da página em que vai ser redirecionada, a única alteração é o sufixo (viu como as aulas de português são importantes, sei até falar bonito) ".htm". Let's Go:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;document.getElementById("meubotaovoltar").onclick = function () {&lt;br /&gt;    eval("location.href="+historicode1+".htm");&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Entendeu?! Independente do valor da variável &lt;em&gt;historicode1&lt;/em&gt; o Javascript irá chamar a página certa (claro, se a página existir e se atribuiu o valor correto da variável).&lt;br /&gt;&lt;br /&gt;Agora é fácil perceber o potencial dessa instrução, sempre onde tiver uma lista de coisas similares à fazer, essa instrução te ajuda muito, pois normalmente quando se tem uma lista dessa você atribui o valor das funções, ou seja lá o que esteja atribuindo, de forma semelhante, diferenciando apenas um pedaço do nome e esse por sua vez pode ser passado por parâmetro, não tendo mais a necessidade de você testar cada valor.&lt;br /&gt;&lt;br /&gt;Fuiii...&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Dúvidas, Críticas, Sugestões... Estou aqui para isso!&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/489365202656835633-6803486721088486591?l=coisasdeweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coisasdeweb.blogspot.com/feeds/6803486721088486591/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=489365202656835633&amp;postID=6803486721088486591' title='3 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/6803486721088486591'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/6803486721088486591'/><link rel='alternate' type='text/html' href='http://coisasdeweb.blogspot.com/2007/06/funo-eval.html' title='Função eval()'/><author><name>ramon</name><uri>http://www.blogger.com/profile/04392282785585991989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-489365202656835633.post-4230772245596823309</id><published>2007-06-15T10:01:00.000-03:00</published><updated>2007-06-16T11:39:02.803-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IEfix'/><category scheme='http://www.blogger.com/atom/ns#' term='HTML'/><title type='text'>Submeter com a tecla Enter no Internet Explorer</title><content type='html'>Amigos e amigas, mais uma vez aqui estou para falar de um, dos vários "bugs" do IEca, pois bem estava feliz da vida de ter resolvido algumas coisas chatas em relação ao IEca, estava tudo funfando legal, mas você sabe, alegria de pobre dura pouco, e alegria de desenvolvedor testando o seu código no IEca, dura menos ainda.&lt;br /&gt;&lt;br /&gt;Fui submeter uma pesquisa teclando o Enter e o IEca não submetia, aliás ele submetia, mas não interpretava o que tinha que ser feito. Estranho não?! Ainda bem que para resolver esse problema é bem simples, existe um elemento html que se chama &lt;em&gt;button&lt;/em&gt;, não estou falando do &lt;em&gt;input&lt;/em&gt;, ele funciona de forma semelhante ao &lt;em&gt;input&lt;/em&gt;, com muito mais opções e é a solução do meu problema.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Características:&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Aceita três tipos de botões &lt;em&gt;button, submit e reset.&lt;/em&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Tem que abrir e fechá-lo&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Pode-se colocar uma imagem&lt;/li&gt;&lt;br /&gt;&lt;li&gt;É imprencídivel que coloque algum texto no botão, pois é ilegal (segundo a W3C), que coloque apenas uma imagem&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Semelhante ao &lt;em&gt;input&lt;/em&gt; coloca-se o &lt;em&gt;value&lt;/em&gt;, para submeter os dados&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Uso do elemento:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;button type="submit" name="submit" value="submit"&amp;gt;Enviar&amp;lt;img src="http://www.blogger.com/icons/send.gif" alt="Enviar" /&amp;gt;&amp;lt;/button&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Existem outras formas de fazer essa submssão funcionar, fica a seu critério escolher uma, mas eu gosto dessa solução e vc?&lt;br /&gt;&lt;br /&gt;Fuiii...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/489365202656835633-4230772245596823309?l=coisasdeweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coisasdeweb.blogspot.com/feeds/4230772245596823309/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=489365202656835633&amp;postID=4230772245596823309' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/4230772245596823309'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/4230772245596823309'/><link rel='alternate' type='text/html' href='http://coisasdeweb.blogspot.com/2007/06/submeter-com-tecla-enter-no-internet.html' title='Submeter com a tecla Enter no Internet Explorer'/><author><name>ramon</name><uri>http://www.blogger.com/profile/04392282785585991989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-489365202656835633.post-1601397772027310364</id><published>2007-06-14T13:19:00.000-03:00</published><updated>2007-06-15T10:04:48.420-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cotidiano'/><title type='text'>E se os sistemas Operacionais fosse linhas aereas?</title><content type='html'>Muito divertido, uma analogia de que se os &lt;acronym title="Sistema Operacional"&gt;SO&lt;/acronym&gt;'s fossem aviões.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://webaugur.com/bibliotheca/field_stock/os-airlines.html"&gt;Link&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;ps: Está em inglês.&lt;br /&gt;&lt;br /&gt;fuiii...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/489365202656835633-1601397772027310364?l=coisasdeweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coisasdeweb.blogspot.com/feeds/1601397772027310364/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=489365202656835633&amp;postID=1601397772027310364' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/1601397772027310364'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/1601397772027310364'/><link rel='alternate' type='text/html' href='http://coisasdeweb.blogspot.com/2007/06/e-se-os-sistemas-operacionais-fosse_14.html' title='E se os sistemas Operacionais fosse linhas aereas?'/><author><name>ramon</name><uri>http://www.blogger.com/profile/04392282785585991989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-489365202656835633.post-407387843138051254</id><published>2007-06-08T09:12:00.001-03:00</published><updated>2007-06-10T10:12:09.416-03:00</updated><title type='text'>JSON e AJAX uma dupla do barulho II</title><content type='html'>Esse post, vai ser só pra ilustrar uma das várias formas de montar a&lt;br /&gt;estrutura de JSON, no lado do server-side, como exemplo vou usar php.&lt;br /&gt;Existe frameworks para isso, então fica a seu critério se vai usar um framework ou desenvolver um code para isso (o que é bem simples e acredito que não há necessidade de um framework). Pois bem, como disse&lt;br /&gt;anteriormente, JSON, até o uso eval, é apenas uma string, logo é só&lt;br /&gt;montar uma string com os padrões. Relembrando o padrão:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;var myJSONObject = {"bindings": [&lt;br /&gt;        {"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"},&lt;br /&gt;        {"ircEvent": "PRIVMSG", "method": "deleteURI", "regex": "^delete.*"},&lt;br /&gt;        {"ircEvent": "PRIVMSG", "method": "randomURI", "regex": "^random.*"}&lt;br /&gt;    ]&lt;br /&gt;};&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Então agora é só montar a estrutura, no meu caso não vou me guiar pelo nome&lt;br /&gt;da propriedade e sim pelo número da coluna, logo o nome das minhas&lt;br /&gt;propriedades são, coluna1, coluna2, coluna3..., . Vamos lá.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;    $tot ='';&lt;br /&gt;    foreach ($arr_sql as $row){&lt;br /&gt;      $linha = '';&lt;br /&gt;      $i=0;&lt;br /&gt;    foreach($row as $col) {&lt;br /&gt;    if (! empty($linha)) {&lt;br /&gt;          $linha .= ", ";&lt;br /&gt;    }&lt;br /&gt;    $linha .= "\"coluna$i\":\"$col\"";&lt;br /&gt;      $i ++;&lt;br /&gt;    }&lt;br /&gt;    if (! empty($tot)) {&lt;br /&gt;      $tot .= ", ";&lt;br /&gt;     }&lt;br /&gt;      $tot .= "{ $linha }";&lt;br /&gt;    }&lt;br /&gt;    $tot .= "{\"meuRet\": [$tot] }";&lt;br /&gt;    echo $tot;&lt;br /&gt;  }&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Utilizei o foreach, pois a minha resposta do bd, retorna um array. Código feito, Viu como é simples, agora faça da maneira que lhe der na telha :).&lt;br /&gt;&lt;br /&gt;Agora a forma que vc vai usar o retorno é simples. Provavelmentes esse JSON retornou algumas linhas, então, especifique a linha e a propriedade que deseja exibir.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;var MyObjJson = eval ('('+http.responseText+')'); //Vai pegar o valor de retorno e transforma-lo em um objeto&lt;br /&gt;alert (MyObjJson.meuRet[0].coluna0); // Mostra o valor da propriedade da coluna0, da linha 0 do objeto meuRet &lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Se você teve a paciência de ler até aqui, lanço-lhe um desafio, existem duas maneiras de montar uma estrutura JSON, aqui fiz uma que é propriedade, valor, quero saber se você consegue fazer da outra forma, OK?! O desafio está lançado.&lt;br /&gt;&lt;br /&gt;Referência:&lt;br /&gt;&lt;a href="http://www.json.org" target="_blank"&gt;JSON.org&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;fuiii...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/489365202656835633-407387843138051254?l=coisasdeweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coisasdeweb.blogspot.com/feeds/407387843138051254/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=489365202656835633&amp;postID=407387843138051254' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/407387843138051254'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/407387843138051254'/><link rel='alternate' type='text/html' href='http://coisasdeweb.blogspot.com/2007/06/json-e-ajax-uma-dupla-do-brarulho-ii.html' title='JSON e AJAX uma dupla do barulho II'/><author><name>ramon</name><uri>http://www.blogger.com/profile/04392282785585991989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-489365202656835633.post-4883545398938502604</id><published>2007-06-03T11:52:00.000-03:00</published><updated>2007-06-11T09:50:22.762-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='Ajax'/><title type='text'>JSON  e AJAX  - Uma dupla do barulho</title><content type='html'>&lt;span style="font-weight:bold;"&gt;JSON&lt;/span&gt;(Javascript Notation Object), é muito legalzinho, imagina só todos os browsers dão suporte sem precisar hackear nada, isso é uma &lt;span style="font-style:italic;"&gt;magavilha&lt;/span&gt;, ele também é suportado por várias linguagens,.Provavelmente se nunca usou JSON, deve estar perguntando o porque de usá-lo? E quando?&lt;br /&gt;&lt;br /&gt;Suponhamos:&lt;br /&gt;Quando fazemos qualquer aplicação em AJAX, aplicação que de fato necessite de AJAX e não por modismo, e queremos pegar o retorno da requisição temos duas opções, ou podemos fazer que o javascript retorne uma array, ou podemos fazer um XML, para estrutura dos dados. Porém nenhuma das duas formas me satisfaz muito, pois se eu fizer um array, eu tenho que separar linhas das colunas com separadores e essa idéia de fazer separadores não é muito legal e com XML é até uma boa opção, mas ele é um pouco pesado em relação ao JSON, ou podemos fazer de outra forma que desconheço, mas deve existir. Vou usar um exemplo de JSON com AJAX, então vamos nessa.&lt;br /&gt;&lt;br /&gt;JSON é uma estrutura de fácil entendimento, tanto para o humano quando para a máquina, é leve e como disse anteriormente é suportado por todos os browsers. Podemos construir uma estrutura JSON de duas formas.&lt;br /&gt;&lt;br /&gt;Um coleção de nomes e valores. &lt;strong&gt;Objeto&lt;/strong&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;var myJSONObject = {"aluno": [&lt;br /&gt;        {"nome":"Yusuke", "nota1": 8.5, "nota2": 4},&lt;br /&gt;        {"nome":"Kuabara", "nota1": 7, "nota2": 3},&lt;br /&gt;        {"nome":"Ryei", "nota1": 7.5, "nota2": 6}&lt;br /&gt;    ]&lt;br /&gt;};&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Uma coleção de valores. &lt;strong&gt;Array&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Var myJSONArray =[8.5, 7,  7.5]&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Sabido essas duas formas de construir um JSON, basta você adaptar à sua necessidade de uso, ou array, ou objeto. Outra coisa que esqueci de mencionar, quando usa a notação de objeto (primeiro exemplo), o javascript ainda não interpreta como tal, por isso tem que fazer uso da função &lt;em&gt;eval()&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;var jsonObject = eval('(' + myJSONObject + ')');&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Agora você tem um Objeto.&lt;br /&gt;&lt;br /&gt;Exemplo com AJAX, não vou colocar a estrutura toda  do AJAX, pois esse não é o foco, mas se você não sabe montar ou não entende a estrutura é só comentar, que volto no tema. OK?! Pois bem:&lt;br /&gt;&lt;br /&gt;Estrutura dos dados retornados&lt;br /&gt;&lt;code&gt;&lt;br /&gt;{"aluno": [&lt;br /&gt;        {"aluno":”Yusuke”, "nota1": 8.5, “nota2”: 4},&lt;br /&gt;        {"aluno":”Kuabara”, "nota1": 7, “nota2”: 3},&lt;br /&gt;        {"aluno":”Ryei”, "nota1": 7.5, “nota2”: 6}&lt;br /&gt;    ]&lt;br /&gt;};&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Função retorno do AJAX:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;function retorno(){&lt;br /&gt;container = document.getElementById("container"); // o elemento que vai exibir o resultado&lt;br /&gt;&lt;br /&gt;if (request.readyState == 4) {//verifica se o estado de completo&lt;br /&gt;  &lt;br /&gt;if (request.status == 200) {//verifica o status da requisição&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;var myJSONObject = eval('(' + request.responseText + ')');&lt;br /&gt;&lt;br /&gt;//joga o retorno para o elemento que vai exibi-lo&lt;br /&gt;&lt;br /&gt;conatiner.innerHTML = "Nome : " + myJSONObject.aluno[0].nome +"\nNota1 : "+ myJSONObject.aluno[0].nota1+"\nNota2 : "+ myJSONObject.aluno[0].nota2;&lt;br /&gt;container.innerHTML += "Nome : " + myJSONObject.aluno[1].nome +"\nNota1 : "+myJSONObject.aluno[1].nota1+"\nNota2 : "+myJSONObject.aluno[1].nota2;&lt;br /&gt;container.innerHTML += "Nome : " + myJSONObject.aluno[2].nome +"\nNota1 : "+myJSONObject.aluno[2].nota1+"\nNota2 : "+myJSONObject.aluno[2].nota2;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Viu como é simples, porém há ainda uma questão e ela é. Como vou fazer com que o meu código server-side (php, asp, ...) monte a estrutura de dados retornados?&lt;br /&gt;&lt;br /&gt;&lt;center&gt;To be Continued...&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update&lt;/strong&gt;&lt;br /&gt;Quando falei em notação de array, foi só para ilustrar como iria ficar os objetos, pois no exemplo de array ele se torna um objeto também, após o usa da function eval()&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/489365202656835633-4883545398938502604?l=coisasdeweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coisasdeweb.blogspot.com/feeds/4883545398938502604/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=489365202656835633&amp;postID=4883545398938502604' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/4883545398938502604'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/4883545398938502604'/><link rel='alternate' type='text/html' href='http://coisasdeweb.blogspot.com/2007/06/json-e-ajax-uma-dupla-do-barulho.html' title='JSON  e AJAX  - Uma dupla do barulho'/><author><name>ramon</name><uri>http://www.blogger.com/profile/04392282785585991989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-489365202656835633.post-6704302866304237240</id><published>2007-05-30T10:10:00.000-03:00</published><updated>2007-05-30T10:11:38.985-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><category scheme='http://www.blogger.com/atom/ns#' term='Cotidiano'/><title type='text'>Novo Google Maps</title><content type='html'>Eu sei que o tema desse blog, é mais voltado para o desenvolvimento, outro dia estava conversando com o meu colega e ele disse-me que estava colocando muitos assuntos no blog e tinha que ser mais específico, na hora eu concordei com ele, porém depois analisei e acho que colocar um plus não faz mal a ninguém, então estou trazendo mais esse assunto e no final das contas o blog é meu e faço o que quero nele. rs &lt;br /&gt;&lt;br /&gt;Pra Google dominar o Mundo, só falta colocar a bandeira, pois o que possui de recursos não está no gibi, eu tentei uma vez catalogar todos os serviços, mas desisti são muitos, e agora tem mais um recurso que estou boquiaberto, todos conhecemos o Google Maps, mas agora eles implementaram no Google Maps, um tal de street View (visualizador de rua) e é isso mesmo que  está pensando, você visualiza a rua como se estivesse nela e mais, você pode rotacionar a câmera 360 graus, é como se você estivesse na rua. Muito legal, por enquanto só tem fotos dos EUA, mas logo logo vai ter as fotos daqui do Brasil. Eles são demais.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://maps.google.com/"&gt;Link&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;ps: Antes que comecem a falar, as fotos não são ao vivo.&lt;br /&gt;&lt;br /&gt;Agora eu vou nessa, porque quero brincar um pouquinho.&lt;br /&gt;&lt;br /&gt;fuiii...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/489365202656835633-6704302866304237240?l=coisasdeweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coisasdeweb.blogspot.com/feeds/6704302866304237240/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=489365202656835633&amp;postID=6704302866304237240' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/6704302866304237240'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/6704302866304237240'/><link rel='alternate' type='text/html' href='http://coisasdeweb.blogspot.com/2007/05/novo-google-maps.html' title='Novo Google Maps'/><author><name>ramon</name><uri>http://www.blogger.com/profile/04392282785585991989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-489365202656835633.post-5716919673523682596</id><published>2007-05-29T09:05:00.000-03:00</published><updated>2007-05-29T11:35:38.306-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web Developer'/><title type='text'>Ferramentas Essenciais de um Web Developer</title><content type='html'>Esse assunto é tema de todo blog e aqui não poderia ser diferente, uso no trabalho e em casa algumas ferramentas que auxiliam muito no processo de desenvolvimento e sem isso seria muuuuuuuuuuuuuito complicado desenvolver qualquer coisa. Então fiz um top 5 das ferramentas que uso, não vou disponibilizar o link, pois não tenho. I'm Sorry!&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;5 - &lt;strong&gt;DOM Inspector&lt;/strong&gt; - Muito útil se você utilizar javascript, te ajuda muito a localizar os elementos. Muito Legal1&lt;/li&gt;&lt;br /&gt;&lt;li&gt;4 - &lt;strong&gt;Web Developer&lt;/strong&gt; - Ainda não utilizei todos as opções dessa ferramenta, mas ajuda-me bastante, especialmente, porque tem uma função para trocar a resolução da tela, então posso ver direto do browser como vai ficar a página em diferentes resoluções. Bom!&lt;/li&gt;&lt;br /&gt;&lt;li&gt; 3 - &lt;strong&gt;PHPLookup&lt;/strong&gt; - É lógico que é apenas para quem trabalha com PHP, você faz a pesquisa e vai diretamente para a informação do manual. Muito Bom!&lt;/li&gt;&lt;br /&gt;&lt;li&gt; 2 - &lt;strong&gt;IETab&lt;/strong&gt; - Talvez pela comodidade que essa ferramenta me traz deveria ser a campeã, mas no trabalho eu não consegui instalar (acho que não tem suporte ao linux) mas em casa uso muito e bani o IE de vez. Espetacular!&lt;/li&gt;&lt;br /&gt;&lt;li&gt; 1 - &lt;strong&gt;Error Console&lt;/strong&gt; - É a grande campeã, sem o error console eu não seria nada, uso muito para o javascript, está certo que já inventaram uns debugadores de javascript por ai, mas não experimentei ainda e confesso que estou muito satisfeito com essa ferramenta. Íncrivel!&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;E você que já utilizou algumas delas, o que acha da minha lista? Acha que tem outras melhores do que essa? &lt;br /&gt;Se você nunca usou experimenta!&lt;br /&gt;&lt;br /&gt;Obs: Essa lista é para quem usa um browser de verdade (FF), pelo fato dele ser open-source nos traz essas facilidades. Apesar de gostar muito do Opera, pois na minha opinião ele é mais "inteligente", porém esses add-ons do FF me acostumaram muito mal, não tem como larga-lo.&lt;br /&gt;&lt;br /&gt;Fuiii...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/489365202656835633-5716919673523682596?l=coisasdeweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coisasdeweb.blogspot.com/feeds/5716919673523682596/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=489365202656835633&amp;postID=5716919673523682596' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/5716919673523682596'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/5716919673523682596'/><link rel='alternate' type='text/html' href='http://coisasdeweb.blogspot.com/2007/05/ferramentas-essenciais-de-um-web.html' title='Ferramentas Essenciais de um Web Developer'/><author><name>ramon</name><uri>http://www.blogger.com/profile/04392282785585991989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-489365202656835633.post-6909939319267251551</id><published>2007-05-25T10:29:00.002-03:00</published><updated>2007-05-25T10:30:06.743-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='DOM'/><category scheme='http://www.blogger.com/atom/ns#' term='DHTML'/><title type='text'>insertAfter no Javascript</title><content type='html'>Que o javascript é uma poderosa ferramenta, não há dúvidas, porém tem certas coisas no javascript que não entendo, Vejamos:&lt;br /&gt;&lt;br /&gt;Imagine o windows explorer, quando você clica no botão (+) ele abre a raiz para ver as subpastas da raíz correto? Então, na página que eu estou montando o efeito é parecido, porém as "subpastas" estão numa div e tenho que construi-la dinâmicamente (por causa do acesso ao banco de dados), a qualquer momento as informações das subpastas podem mudar. No início do desenvolvimento, pensei logo em utilizar o appendChild.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;document.getElementById("meuDiv").appendChild("DIV");&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Porém ele só adiciona um elemento (no caso, uma div) no final de uma lista de elementos (no caso, ele seria o último elemento do div meuDiv) e isso não me servia,  pois eu tinha que colocar o elemento imediatamente após a linha em que foi clicado o botão (+), como de costume lá vou eu no google procurar a solução, achando a função insertBefore (inserir antes).&lt;br /&gt;&lt;br /&gt;&lt;code&gt;document.getElementById("meuDiv").insertBefore("DIV", document.getElementById("linhadoMeuDiv[1]"));&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Bom até aqui meio caminho andado, pois ele adiciona agora a div onde eu quero, porém ele adiciona o elemento antes da minha linha, ou seja, o meu efeito "windows explorer" funcionava de cabeça para baixo.&lt;br /&gt;&lt;br /&gt;Eu falando para mim.&lt;br /&gt;_ Se tem insertBefore, logicamente vai ter insertAfter e meu problema vai estar resolvido, já posso pular para outros problemas.&lt;br /&gt;&lt;br /&gt;E adivinha só, não existe essa função, tive então que procurar por uma solução lendo um pouco sobre DOM, logo fiz isso:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;document.getElementById("meuDiv").insertBefore("DIV", document.getElementById("linhadoMeuDiv[1]").nextSibling);&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Agora sim problema resolvido, aquela propriedade nextSibling, vai para o próximo elemento. Ao invés de pegar o elemento linhadoMeuDiv[1], vai para linhadoMeuDiv[2], depois de pensar um pouco ainda havia um problema.&lt;br /&gt;&lt;br /&gt;Vamos supor que o meu div tivesse 10 linhas e eu pressionasse o botão (+) da décima linha, como é que eu iria passar para o próximo elemento se não havia? Ou seja, no último elemento iria me retornar vazio.&lt;br /&gt;&lt;br /&gt;Obs: Só essa linha funcionou no firefox, porém é uma maneira errada de funcionar e isso pode interferir de alguma forma no código.&lt;br /&gt;&lt;br /&gt;Criei uma função para evitar esse erro. A lógica é bem simples, eu verifico se o botão que pressionei pertence à última linha, se pertencer eu uso o appendChild senão eu uso insertBefore, aqui vai o código:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;function insertAfter (Pai, Irmao, elemento, index="" ) {&lt;br /&gt; if (index != "") irmao = irmao+"["+index+"]";&lt;br /&gt; if (document.getElementById(Pai).lastChild.id == document.getElementById(irmao).id) {&lt;br /&gt;  novoElemento = document.getElementById(Pai).appendChild(elemento);&lt;br /&gt; } else {&lt;br /&gt;  novoElemento = div_plano.insertBefore("DIV", document.getElementById(irmao).nextSibling);&lt;br /&gt; }&lt;br /&gt; return novoElemento;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;insertAfter("meuDiv", "linhaMeuDiv", "DIV", 1).setAttribute("id","DivSubLinha["+numero+"]");&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;função prontinha para você usar, só precisa passar os parâmetros:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Nome do elemento pai.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Nome do elemento da linha. (no meu caso, a linha em que foi clicado o botão)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Nome do elemento que vai ser adicionado. (ex: div, input, select,...)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;o último parâmetro é opcional, pois no meu caso como eram várias linhas a única diferenciação entre elas era o número , pois todas tinham o mesmo nome, é claro. A minha separação foi feita por colchetes, ali fica à gosto do freguês, é só trocar da forma em que você está indexando.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Depois de criar o elemento, eu iria usá-lo, então tinha que saber o id para trabalhar com ele. Usei o setAttribute (setar atributo). &lt;br /&gt;&lt;br /&gt;&lt;code&gt;setAttribute("nomePropriedade", "valorPropriedade");&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Essa função tem dois parâmetros o primeiro é o nome da propriedade do elemento (ex: id, name, value...) e o outro é o valor da propriedade.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Eu vi um tutorial muito bom sobre DOM e estou passando &lt;a href="http://www.pageresource.com/dhtml/ryan/part4-1.html" target="_blank"&gt;aqui&lt;/a&gt; o link,  o problema é que está em inglês, mas vale a pena se esforçar um pouco para ler, isso se você não souber.&lt;br /&gt;&lt;br /&gt;Espero que tenha sido útil e comentem please.&lt;br /&gt;&lt;br /&gt;Fuiii...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/489365202656835633-6909939319267251551?l=coisasdeweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coisasdeweb.blogspot.com/feeds/6909939319267251551/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=489365202656835633&amp;postID=6909939319267251551' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/6909939319267251551'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/6909939319267251551'/><link rel='alternate' type='text/html' href='http://coisasdeweb.blogspot.com/2007/05/insertafter-no-javascript_25.html' title='insertAfter no Javascript'/><author><name>ramon</name><uri>http://www.blogger.com/profile/04392282785585991989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-489365202656835633.post-1337911560377866919</id><published>2007-05-24T13:15:00.000-03:00</published><updated>2007-05-24T13:21:00.459-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='Ajax'/><category scheme='http://www.blogger.com/atom/ns#' term='HTML'/><title type='text'>Acentuação no Ajax</title><content type='html'>Sabemos (ou pelo menos deveríamos saber) que o grande Boom do segundo semestre de 2006, foi Ajax todos os blogs possíveis e imagináveis abordavam o tema, era muita empolgação, todos os sites tinham  que ter Ajax, em pouco tempo perguntavamos como poderíamos existir sem o tal Ajax ;), até que no final do ano com o intensivo uso de Ajax, vimos que não é as mil maravilhas. Percebemos que Ajax não é perfeito, como todas as coisas, e começaram a ter movimentos com grandes críticas ao Ajax, eu simpatizo com ele, mas como tudo na vida, na medida certa. Enfim, não estou aqui pra julgar o pobre coitado e se você quer ler mais sobre isso, na internet tem um monte de blogs que abordam o tema e no meu blogroll, que ainda vou fazer, também tem alguns que abordam. Como sempre, ou na maioria das vezes, vim apenas trazer o código. &lt;br /&gt;Só fiz essa introdução, pois não tinha falado sobre isso e como todo bom anfitrião tenho que fazer as honras.&lt;br /&gt;&lt;br /&gt;Cenário:&lt;br /&gt;Nesse novo emprego, estamos implementando uma parte do site que utiliza ajax, para pesquisa em banco e como era de se imaginar esbarrei no problema de acentuação, e eu logo foi ao senhor-que-tudo-sabe (leia-se: Google), afim de uma resposta e a que mais achei foi de mudar o header da página server-side (no meu caso, php) e client-side (javascript e o HTML), para ISO-8859-1 (creio que a numeração seja essa) e vi um post muito bom lá no &lt;a href="http://elmicox.blogspot.com/"&gt;Elmicox&lt;/a&gt; (se você não conhece esse blog, não sabe o que está perdendo, ele saca muito só não passei o permalink, pois eu não salvei-o) logo fui testar, e para minha surpresa não deu certo, continuei a minha busca e nada encontrei, até que nós mesmos resolvemos a questão de uma maneira muito simples e de uma forma alternativa que achei muito legal e como disse simplérrima (isso ficou meio gay), a solucão baseia-se em substituir os caracteres acentuados, por aqueles códigos de acentuação do html e depois retornar essa troca para o javascript e os valores o html interpretar automaticamente a acentuação, vamos ao que interessa:&lt;br /&gt; .&lt;br /&gt;no PHP:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;function html_scape($strIn) {&lt;br /&gt; $arr_procura = array ('á', 'à', 'ã', 'â', 'ä', 'õ', 'ò','ó', 'è', 'é', 'ê', 'ë', 'ì', 'í', 'ï', 'ç', 'Á', 'À', 'Ã', 'Â', 'Ä', 'Õ','Ò', 'Ó', 'È', 'É', 'Ê', 'Ë', 'Ì', 'Í', 'Ï', 'Ç');&lt;br /&gt; $arr_troca = array ('&amp;amp;aacute;','&amp;amp;agrave;', '&amp;amp;atilde;', '&amp;amp;acirc;', '&amp;amp;auml;', '&amp;amp;otilde;', ' &amp;amp;ograve;', '&amp;amp;ocirc;', '&amp;amp;egrave;', '&amp;amp;eacute;', ' &amp;amp;ecirc;', '&amp;amp;euml;', '&amp;amp;igrave;', '&amp;amp;iacute;', '&amp;amp;iuml;','&amp;amp;ccedil;', '&amp;amp;Aacute;','&amp;amp;Agrave;', '&amp;amp;Atilde;', '&amp;amp;Acirc;', '&amp;amp;Auml;', '&amp;amp;Otilde;', '&amp;amp;Ograve;', '&amp;amp;Ocirc;', '&amp;amp;Egrave;', '&amp;amp;Eacute;', '&amp;amp;Ecirc;', '&amp;amp;Euml;', '&amp;amp;Igrave;', '&amp;amp;Iacute;', '&amp;amp;Iuml;','&amp;amp;Ccedil;');&lt;br /&gt; return str_replace($arr_procura, $arr_troca, $strIn);&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Pega-se por parâmetro a string que contém os caracteres que irão ser trocados. (Utilizei o retorno do sql, para o javascript).&lt;br /&gt;A array $arr_procura, recebe os caracteres que vão ser procurados ( no nosso caso os acentuados).&lt;br /&gt;A array $arr_troca, recebe os caracteres que vão ser trocados (no nosso caso aquele código html).&lt;br /&gt;Após manda-se retornar a troca dos caracteres através da função str_replace.&lt;br /&gt;&lt;br /&gt;Obs: Poderíamos utilizar um array bidimensional para fazer a troca, pois um array complementa o outro, mas para fins de melhor entendimento fiz duas arrays.&lt;br /&gt;Como disse anteriormente, os arrays se complementam,logo você tem que manter a ordem do posicionamento dos caracteres que vão ser trocados.&lt;br /&gt;&lt;br /&gt;Obs2: No meu caso os caracteres especias, são apenas, os acentuados, então o meu array ficou dessa forma, mas você pode alterar esse array da forma que for necessário pra ti, respeitando , é claro, o posicionamento nos dois arrays.&lt;br /&gt;&lt;br /&gt;Update:&lt;br /&gt;No outro blog o micox, fez uma observação muito interessante, no php tem uma função nativa que converte automaticamente os caracteres para o código html, dessa forma é bem mais simples de resolver o problema, a função é html_entities($string).&lt;br /&gt;&lt;br /&gt;Comentem, please...&lt;br /&gt;&lt;br /&gt;fuiii...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/489365202656835633-1337911560377866919?l=coisasdeweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coisasdeweb.blogspot.com/feeds/1337911560377866919/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=489365202656835633&amp;postID=1337911560377866919' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/1337911560377866919'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/1337911560377866919'/><link rel='alternate' type='text/html' href='http://coisasdeweb.blogspot.com/2007/05/acentuao-no-ajax.html' title='Acentuação no Ajax'/><author><name>ramon</name><uri>http://www.blogger.com/profile/04392282785585991989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-489365202656835633.post-3051501834384533208</id><published>2007-05-24T09:35:00.000-03:00</published><updated>2007-05-24T09:42:10.811-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='Expressões Regulares'/><title type='text'>Expressões Regulares no JavaScript</title><content type='html'>No javascript, que atualmente é a minha menina dos olhos, pois trabalho com ele o dia todo e até estou simpatizando com ele. Considero que no javascript é muito interessante ter esse conceito, pois facilita muito o trabalho do desenvolvedor, para fazer validação de formulário. Em expressões regulares, trata-se de procurar em uma string, toda a ocorrência da expressão declarada, com isso podemos buscar uma informação de um texto (string) onde queremos, ou fazer um padrão de string aceito para o campo determinado, essa parte é muito interessante para se fazer validação, no entanto o intuito desse post não é ensinar as expressões regulares em si, e sim como utilizar essa poderosa ferramenta com o javascript.&lt;br /&gt;&lt;br /&gt;No javascript existe a função RegExp.&lt;br /&gt;&lt;br /&gt;Do começo:&lt;br /&gt;&lt;br /&gt;Uma variável qualquer tem que receber o valor da expressão regular&lt;br /&gt;&lt;code&gt;re = new RegExp("\\[(\\d+)\\]");&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Como exemplo, a variável é instância e utilizei a ER que fiz no trabalho, tinha que procurar por uma lista de elementos o seu número index, e este por sua vez estava entre colchetes.&lt;br /&gt;&lt;br /&gt;Logo após uma variável irá receber a execução da ER em uma determinada string&lt;br /&gt;&lt;code&gt;minha_er = re.exec("Nesse exemplo estou procurando por uma ocorrência de [1]");&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Quando se faz isso, a varável minha_er torna-se um array de 2 elementos, independente de quantas ocorrências da ER contiver no texto, pois ele para de procurar na primeira ocorrência, onde o primeiro elemento da array (posição 0), vai retornar, [1] e o segundo elemento (posição 1) vai retornar, 1.&lt;br /&gt;&lt;br /&gt;Obs: Não estudei essa função a fundo, então não posso confirmar, se passando outro parâmetro a função irá continuar a busca, afim de retornar os outros elementos, acredito, que há uma forma de trazer mais elementos para esta array, porém como disse anteriormente, não estudei-a a fundo, se você souber, os comentários são sempre muito bem-vindo.&lt;br /&gt;&lt;br /&gt;Vou colocar o code, aqui sem comentários para poder copiar:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;window.onload = function () {&lt;br /&gt;re = new RegExp("\\[(\\d+)\\]");&lt;br /&gt;minha_er = re.exec("Nesse exemplo estou procurando por uma ocorrência de [1]");&lt;br /&gt;alert ("Nesse exemplo estou procurando por uma ocorrência de [1]");&lt;br /&gt;alert (Posição 0:"+ minha_er[0]+" e posição 1:"+minha_er[1]);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Agora é só se diverti, um pouco.&lt;br /&gt;Espero que tenha gostado.&lt;br /&gt;&lt;br /&gt;Fuiii...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/489365202656835633-3051501834384533208?l=coisasdeweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coisasdeweb.blogspot.com/feeds/3051501834384533208/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=489365202656835633&amp;postID=3051501834384533208' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/3051501834384533208'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/3051501834384533208'/><link rel='alternate' type='text/html' href='http://coisasdeweb.blogspot.com/2007/05/expresses-regulares-no-javascript.html' title='Expressões Regulares no JavaScript'/><author><name>ramon</name><uri>http://www.blogger.com/profile/04392282785585991989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-489365202656835633.post-3866361164637696889</id><published>2007-05-24T09:30:00.001-03:00</published><updated>2007-05-24T09:35:28.491-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><title type='text'>Diferentes Includes</title><content type='html'>Feriadão, hoje sendo meu dia, (dia do trabalhador, cof cof), vou escrever um post bem relax, sobre algo que, sempre, tive uma certa curiosidade mas nunca li para saber maiores detalhes. &lt;br /&gt;&lt;br /&gt;No PHP, temos instruções para incluir um arquivo em outro, normalmente usa-se a instrução &lt;em&gt;include()&lt;/em&gt;, porém há outros como o &lt;em&gt;require&lt;/em&gt;, &lt;em&gt;require_once&lt;/em&gt;, &lt;em&gt;include_once&lt;/em&gt; e não sabia a diferença entre eles, mas hoje deixei a preguiça pro lado e fui ler sobre o assunto, creio que em muitas situações pode ser bem útil saber qual instrução utilizar.&lt;br /&gt;&lt;br /&gt;Todos funcionam de forma semelhante, a única diferença, até que se prove o contrário, é que no &lt;em&gt;require&lt;/em&gt;, quando há algum erro ele retorna um &lt;em&gt;Fatal Error&lt;/em&gt;, ou seja,  interrompe o processamento da página e isso não acontece no &lt;em&gt;include&lt;/em&gt; e também tem diferença na ordem em que se inclui os arquivos.&lt;br /&gt;&lt;br /&gt;Observação:&lt;br /&gt;Um erro de interpretação no arquivo incluído não causa a parada do processamento em versões do PHP anteriores a PHP 4.3.5. A partir desta versão, causa.&lt;br /&gt;&lt;br /&gt;Vale lembrar que existem as suas derivações &lt;em&gt;require_once e include_once&lt;/em&gt;, cada qual comporta-se de forma semelhante aos seus derivadores, porém o script é executado apenas uma vez. Esses dois já são para um uso mais restrito, pois não é sempre que você tem a convicção de que o script vai ser executado apenas uma vez.&lt;br /&gt;&lt;br /&gt;fuiii...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/489365202656835633-3866361164637696889?l=coisasdeweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coisasdeweb.blogspot.com/feeds/3866361164637696889/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=489365202656835633&amp;postID=3866361164637696889' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/3866361164637696889'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/3866361164637696889'/><link rel='alternate' type='text/html' href='http://coisasdeweb.blogspot.com/2007/05/diferentes-includes_24.html' title='Diferentes Includes'/><author><name>ramon</name><uri>http://www.blogger.com/profile/04392282785585991989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-489365202656835633.post-8298485148637199047</id><published>2007-05-24T09:21:00.000-03:00</published><updated>2007-05-24T09:29:53.280-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='Programação'/><title type='text'>A variável $this</title><content type='html'>Estamos acabando a série de POO, espero que esteja gostando, hoje falaremos sobre a variável $this, anteriormente utilizei-a, porém não expliquei o uso. Agora se concentre bastante nas minhas próximas palavras, pois isso irá mudar a sua vida, se você não tem nervos de aço é melhor trocar de blog (por favor, não faça isso, foi só força de expressão), respire fundo que agora vou explicar-lhe. Que rufem os tambores...&lt;br /&gt;&lt;br /&gt;A variável $this representa o próprio objeto. (pode acreditar é só isso, porém vou falar mais sobre isso pra encher lingüiça, porque senão o post vai ficar muito pequeno.)&lt;br /&gt;&lt;br /&gt;Pois bem, toda vez que temos a variável $this dentro de uma classe, a variável $this se refere ao objeto em si.&lt;br /&gt;&lt;br /&gt;Utilizando o exemplo do post anterior:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;Class conta {&lt;br /&gt;var $saldo;&lt;br /&gt;Function conta{ // construtor&lt;br /&gt;        $this -&amp;gt; saldo = 50;&lt;br /&gt;}&lt;br /&gt;Function ver() { //método&lt;br /&gt; Return $this -&amp;gt; saldo;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Function credito($valor){ //método&lt;br /&gt; $this-&amp;gt;saldo += $valor;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;$minhaconta = new conta;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;No exemplo acima, o objeto &lt;em&gt;minhaconta&lt;/em&gt;, quando instanciado vai receber o valor do saldo (por causa do construtor) e assim acontece com todos os outros métodos, pois todos eles referenciam ao objeto com a variável $this.&lt;br /&gt;&lt;br /&gt;Qualquer dúvida, é só falar&lt;br /&gt;&lt;br /&gt;Fuiii...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/489365202656835633-8298485148637199047?l=coisasdeweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coisasdeweb.blogspot.com/feeds/8298485148637199047/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=489365202656835633&amp;postID=8298485148637199047' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/8298485148637199047'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/8298485148637199047'/><link rel='alternate' type='text/html' href='http://coisasdeweb.blogspot.com/2007/05/varivel-this.html' title='A variável $this'/><author><name>ramon</name><uri>http://www.blogger.com/profile/04392282785585991989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-489365202656835633.post-7953605037158083238</id><published>2007-05-24T09:16:00.000-03:00</published><updated>2007-05-24T09:21:17.786-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='Programação'/><title type='text'>Métodos e Construtores</title><content type='html'>Continuando...&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;strong&gt;Método&lt;/strong&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Podemos pensar no método como uma função, pois na verdade é isso, o que diferencia um método é o fato dele se encontrar em uma classe. Nele há toda a implementação da rotina para aquela classe, quase todas as classes são compostas por um conjunto de métodos (funções), na verdade diria todas, mas sempre aparece algo diferente por aí, então já viu. Exemplo:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;Class MinhaClasse {&lt;br /&gt;Function MeuMetodo () {&lt;br /&gt;/* Código */&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;A function MeuMetodo é o nosso método.&lt;br /&gt;&lt;br /&gt;Agora que você sabe tudo de métodos, vamos a mais um conceito chamado de &lt;em&gt;construtor&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;strong&gt;Construtor&lt;/strong&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Construtores são métodos executados no momento em que se instância um objeto, para se ter um construtor, basta que coloque o nome do método com o mesmo nome da classe à que pertence. Muito utilizado para inicializar variáveis. Ilustrarei isso tudo com um exemplo, diga-se de passagem todos usam esse exemplo.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;Class conta {&lt;br /&gt;var $saldo;&lt;br /&gt;Function conta{ // construtor&lt;br /&gt;        $this -&amp;gt; saldo = 50;&lt;br /&gt;}&lt;br /&gt;Function ver() { //método&lt;br /&gt; Return $this -&amp;gt; saldo;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Function credito($valor){ //método&lt;br /&gt; $this-&amp;gt;saldo += $valor;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;?&amp;gt;&lt;br /&gt;&lt;br /&gt;$minhaconta = new conta;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;O código acima representa três tarefas, bem simples, da conta de um banco, quando abro um conta (instancio o objeto), automaticamente tenho 50 de crédito na conta, pois utilizei um construtor o qual no momento em que instancio o objeto tenho 50 de crédito, e tenho dois outros métodos que me permite, ver o saldo (function ver) e depositar crédito (function credito).&lt;br /&gt;&lt;br /&gt;Como diria aquele coelhinho da Warner&lt;br /&gt;Isso é tudo pessoal.&lt;br /&gt;&lt;br /&gt;Fuiii....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/489365202656835633-7953605037158083238?l=coisasdeweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coisasdeweb.blogspot.com/feeds/7953605037158083238/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=489365202656835633&amp;postID=7953605037158083238' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/7953605037158083238'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/7953605037158083238'/><link rel='alternate' type='text/html' href='http://coisasdeweb.blogspot.com/2007/05/mtodos-e-construtores.html' title='Métodos e Construtores'/><author><name>ramon</name><uri>http://www.blogger.com/profile/04392282785585991989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-489365202656835633.post-2039741728746161525</id><published>2007-05-23T16:49:00.000-03:00</published><updated>2007-05-23T16:55:29.845-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='Programação'/><title type='text'>Classe dos Objetos</title><content type='html'>Aqui estou eu, continuando a série de POO, já falamos anteriormente sobre &lt;a href="http://coisasdeweb.blogspot.com/2007/05/conceito-de-objeto.html" target="_blank"&gt;objeto&lt;/a&gt; e iremos tratar hoje sobre a classe dos objetos.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;strong&gt;Classe&lt;/strong&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Descreve um conjunto de dados estruturados e caracterizados por propriedades comuns. Uma classe é um conjunto de objetos que têm as mesmas operações (métodos), falei bonito agora. &lt;br /&gt;&lt;br /&gt;Imagine uma turma (classe) qualquer, pois bem nessa turma possuem alunos (objetos). E nessa turma os alunos têm interesses comuns, portanto vão estudar as mesmas matérias (métodos). Nisso em que se baseia a classe, claro que há exceção, nem todos os alunos (objetos), necessitam ter as mesmas matérias (métodos) a cursar, mas ainda sim pertencem a mesma turma(classe).&lt;br /&gt;&lt;br /&gt;Também existe o conceito de herança que é um pouco mais complicado, vou ficar por esse conceito por enquanto.&lt;br /&gt;&lt;br /&gt;Ou seja&lt;br /&gt;&lt;br /&gt;Uma classe de objetos pode ser definida como a descrição de um grupo de objetos mediante um conjunto de uniforme de atributos e serviços. Agora que estamos com bastante conceito, nada melhor que um bom exemplo:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Class Nome_da_classe {&lt;br /&gt;Var $variavel1;&lt;br /&gt;Function metodo_da_classe ($parametro) {&lt;br /&gt;/* Corpo da Função (método) */&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;$objeto = new Nome_da_classe;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Criamos uma classe contendo um método (function) e depois instanciamos (inicializamos) o objeto, e trabalhamos com o objeto.&lt;br /&gt;&lt;br /&gt;It's that all fulks!&lt;br /&gt;&lt;br /&gt;Essa parte você já sabe, eu peço que você comente e agradeço por ter lido o post todo (essa parte é nova).&lt;br /&gt;&lt;br /&gt;Fuiii...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/489365202656835633-2039741728746161525?l=coisasdeweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coisasdeweb.blogspot.com/feeds/2039741728746161525/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=489365202656835633&amp;postID=2039741728746161525' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/2039741728746161525'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/2039741728746161525'/><link rel='alternate' type='text/html' href='http://coisasdeweb.blogspot.com/2007/05/classe-dos-objetos.html' title='Classe dos Objetos'/><author><name>ramon</name><uri>http://www.blogger.com/profile/04392282785585991989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-489365202656835633.post-7250291156019807737</id><published>2007-05-23T16:47:00.000-03:00</published><updated>2007-05-23T16:49:26.623-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='Programação'/><title type='text'>Conceito de Objeto</title><content type='html'>Vamos colocar um pouco de conceito aqui, Existe um tipo de programação chamada Programação orientada por objeto (ou POO, para os mais íntimos), como o próprio nome diz, faz-se a programação com foco nos objetos, de fato considero-a melhor de programar, não só eu, como muitos “fazedores” de códigos, ultimamente esse tipo de programação anda crescendo muito, também não é por menos, porém há muitas pessoas que preferem a programação linear por ser tratar de uma programação mais fácil de ser desenvolvida. Sem dúvidas, a programação linear não possui tantos conceitos como o POO, porém esses conceitos, existem pra facilitar a vida do &lt;em&gt;fazedor&lt;/em&gt; e não pra complica-la, pois para fazer uma alteração no código fica muito mais fácil e se quiser utilizar uma parte do código de um programa em outro, também é mais simples.&lt;br /&gt;&lt;br /&gt;Já expus a minha opinião em relação a isso, mas vou deixar claro que isso não quer dizer que a minha opinião é a verdade absoluta, pois existe ninguém melhor do que você mesmo pra dizer o que você prefere. :)&lt;br /&gt;&lt;br /&gt;Dentre os vários conceitos, colocarei os principais para começar a desenvolver nesse tipo de programação e cada qual vai estar em um post distinto. &lt;em&gt;Classe, Objeto, Método, Construtor, A variável  This&lt;/em&gt; e quem sabe &lt;em&gt;Sub-Classe&lt;/em&gt;. E como exemplo utilizarei PHP, pois gosto mais dessa linguagem.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;strong&gt;Objeto&lt;/strong&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;A parte mais importante da programação orientada por objeto, é o objeto, pois o que seria dela se não tivesse um objeto?, Em outras palavras "O objeto é O cara" ("O Cara", para quem não sabe é uma expressão com sentido daquilo ser o melhor, no nosso exemplo o objeto é o melhor), Muitos lugares definem o objeto como algo real, de fato em muitos casos  será esse seu objeto, algo que se pode pegar, apertar, acariciar, é melhor parar por aqui. Porém, iria mais fundo nesse conceito, passando de tudo que é real, para uma entidade lógica que contém dados e código, com o qual manipulamos os dados, por exemplo:&lt;br /&gt;&lt;br /&gt;Um sonho, posso considerá-lo um objeto?&lt;br /&gt;Pode, pois em um sonho você pode &lt;em&gt;compreender, esquecer, interpretar, jogar no bicho &lt;/em&gt;etc.&lt;br /&gt;&lt;br /&gt;Vamos à outro exemplo:&lt;br /&gt;Um conta de banco, pode-se &lt;em&gt;sacar, efetuar um pagamento, depositar, conseguir um empréstimo, aborrecer-se com o banco com as tarifas altas&lt;/em&gt; etc.&lt;br /&gt;&lt;br /&gt;Esses dois exemplos são muito bons, pois não existem no mundo real (só ideologicamente),  mas mesmo assim podem ser um objeto, como percebe-se, os dois objetos tem em comum operações feitas a partir dele e à essas operações damos o nome de métodos (falaremos disso mais tarde).&lt;br /&gt;&lt;br /&gt;Para utilizar um objeto é necessário instanciá-lo (iniciar):&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$objeto = new nome_da_classe&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;O operador new é o responsável pela inicialização do objeto e para isso também temos que colocar uma classe referente à ele.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Espero ter conseguido ilustrar bem o conceito de objeto, qualquer dúvida comenta e senão tiver dúvida comenta também, se gostou comenta e senão gostou comenta também, enfim o importante é comentar. :)&lt;br /&gt;&lt;br /&gt;Fuiii...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/489365202656835633-7250291156019807737?l=coisasdeweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coisasdeweb.blogspot.com/feeds/7250291156019807737/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=489365202656835633&amp;postID=7250291156019807737' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/7250291156019807737'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/7250291156019807737'/><link rel='alternate' type='text/html' href='http://coisasdeweb.blogspot.com/2007/05/conceito-de-objeto.html' title='Conceito de Objeto'/><author><name>ramon</name><uri>http://www.blogger.com/profile/04392282785585991989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-489365202656835633.post-3174198494937924865</id><published>2007-05-23T16:42:00.000-03:00</published><updated>2007-05-23T16:46:38.627-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='HTML'/><title type='text'>Abreviação das palavras</title><content type='html'>Hoje li um post no &lt;a href="http://www.revolucao.etc.br/archives/estilizando-abbr-no-internet-explorer-6/" target="_blank"&gt;Revolução e etc&lt;/a&gt;, que chamou-me a atenção, então resolvi fazer um &lt;em&gt;fast-post&lt;/em&gt;, existe um tal elemento abbr, que a função dele é fazer uma abreviação de uma palavra, e se passar o mouse por cima da palavra aparece uma etiqueta com o significado completo da palavra, através da propriedade &lt;em&gt;title&lt;/em&gt;, o uso dela é bem simples:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;strong&gt;&lt;abbr title="Cascading Style Sheets"&gt;CSS&lt;/abbr&gt;&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;&lt;code&gt;&amp;lt;abbr title="Cascading Style Sheets"&amp;gt;CSS&amp;lt;/abbr&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; Só pra variar o IEca não dá suporte a esse elemento. Como de costume, existe maneiras de transpassar por esse problema, aqui vai uma delas:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;br /&gt;Function abbrToSpan(){&lt;br /&gt; var newSourceCode;&lt;br /&gt;  if(isIE){&lt;br /&gt;    newSourceCode           = document.body.innerHTML;&lt;br /&gt;    newSourceCode           = newSourceCode.replace('&amp;lt;ABBR','&amp;lt;SPAN class="abbr"&amp;gt;');&lt;br /&gt;    newSourceCode           = newSourceCode.replace('&amp;lt;/ABBR&amp;gt;','&amp;lt;/SPAN&amp;gt;');&lt;br /&gt;    document.body.innerHTML = newSourceCode;&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;window.onload = function(){&lt;br /&gt; abbrToSpan();&lt;br /&gt; /* other onloads */&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;isIE = (document.all) ? true:false;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://annevankesteren.nl/2003/08/improved-styling-abbr-in-ie" target="_blank"&gt;Aqui&lt;/a&gt; vai o link do código. &lt;br /&gt;&lt;br /&gt;O código é bem simples, substitui as tags &lt;em&gt;abbr&lt;/em&gt; por tags &lt;em&gt;span&lt;/em&gt; com a classe abbr, que ela por sua vez, vai estar configurada no css (estilo).&lt;br /&gt;&lt;br /&gt;Entendido o assunto, vou estende-me um pouco mais, existem diferenças entre abreviações, há aquelas que se fala letra por letra da abreviação (CSS, HTML, PHP etc), mas há aqueles onde formam uma palavra (Modem, ALCA, ONU etc) e para esse segundo grupo utilizamos a tag &lt;em&gt;acronym&lt;/em&gt; o qual funciona de forma semelhante:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;strong&gt;&lt;acronym title="Organização das Nações Unidas"&gt;ONU&lt;/acronym&gt;&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;strong&gt;&amp;lt;acronym title="Organização das Nações Unidas"&amp;gt;ONU&amp;lt;/acronym&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Esse é suportado pelo IEca 6.&lt;br /&gt;&lt;br /&gt;Conclusão:&lt;br /&gt;&lt;br /&gt;Não há problema de utilizar o &lt;em&gt;acronym&lt;/em&gt; em tudo, a não ser que você tenha problemas com códigos "sujos".&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Referência:&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://www.maujor.com/tutorial/estilizar-elementos-abbr-e-acronym.php"&gt;Maujor&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Fuiii...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/489365202656835633-3174198494937924865?l=coisasdeweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coisasdeweb.blogspot.com/feeds/3174198494937924865/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=489365202656835633&amp;postID=3174198494937924865' title='3 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/3174198494937924865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/3174198494937924865'/><link rel='alternate' type='text/html' href='http://coisasdeweb.blogspot.com/2007/05/abreviao-das-palavras.html' title='Abreviação das palavras'/><author><name>ramon</name><uri>http://www.blogger.com/profile/04392282785585991989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-489365202656835633.post-947229777718337200</id><published>2007-05-23T16:40:00.000-03:00</published><updated>2007-05-23T16:41:57.147-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><title type='text'>Tratamento da string URL em PHP</title><content type='html'>Ufa! Até que enfim, tem php na área.&lt;br /&gt;&lt;br /&gt;Algumas vezes nós passamos os dados de um formulário html, pelo método GET e quando vamos pegar esses valores, algumas vezes, não vem da forma que enviamos, pois a url é codificada, então aqui vai uma dica de como codificar/decodificar esses dados.&lt;br /&gt;&lt;br /&gt;Função urlencode&lt;br /&gt;&lt;br /&gt;&lt;code&gt;String urlencode(string texto);&lt;/code&gt; // Responsável por codificar a string&lt;br /&gt;&lt;br /&gt;Função urldecode&lt;br /&gt;&lt;br /&gt;&lt;code&gt;String urldecode(string texto);&lt;/code&gt; // Responsável por decodificar a string&lt;br /&gt;&lt;br /&gt;Obs: As regras pra codificar os dados, são as seguintes:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;O caracter espaço é substituído por +&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Todos os outros caracteres não alfanuméricos, são substituído por % sucedido pelo correspondente código da tabela ASCII.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Fuiii...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/489365202656835633-947229777718337200?l=coisasdeweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coisasdeweb.blogspot.com/feeds/947229777718337200/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=489365202656835633&amp;postID=947229777718337200' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/947229777718337200'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/947229777718337200'/><link rel='alternate' type='text/html' href='http://coisasdeweb.blogspot.com/2007/05/tratamento-da-string-url-em-php.html' title='Tratamento da string URL em PHP'/><author><name>ramon</name><uri>http://www.blogger.com/profile/04392282785585991989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-489365202656835633.post-8957117653969909657</id><published>2007-05-21T16:15:00.000-03:00</published><updated>2007-05-21T16:17:41.393-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>INNER JOIN - SQL</title><content type='html'>Mudando um pouco de ares, irei falar de &lt;a href="http://pt.wikipedia.org/wiki/Sql" target="_blank"&gt;SQL&lt;/a&gt; (Structured Query Language), nesse post irei falar de uma função em que se ouve muito falar, apresento-lhe INNER JOIN. Vou considerar que você tenha alguma noção de SQL.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;strong&gt;INNER JOIN&lt;/strong&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Em muitos casos, você poderá precisar apresentar um resultado o qual não está em apenas uma tabela, então você utiliza o INNER JOIN para fazer esse relacionamento das tabelas, fazendo da seguinte forma, como você sabe, ou deveria saber, quando duas tabelas estão interligadas, de alguma forma, precisa-se de um campo comum entre ambas (chave estrangeira).&lt;br /&gt;&lt;br /&gt;Por exemplo:&lt;br /&gt;&lt;br /&gt;Tenho uma escola com várias unidades e criei uma secretaria virtual. Nessa secretaria virtual, tenho os alunos cadastrados, porém eu preciso saber qual é a unidade em que esse aluno estuda. Possuímos aqui pelo menos duas tabelas, &lt;strong&gt;Aluno&lt;/strong&gt; e &lt;strong&gt;Unidade&lt;/strong&gt;, onde o relacionamento é &lt;em&gt;um-para-muitos&lt;/em&gt;, porque um aluno só pode estar matriculado em &lt;em&gt;uma&lt;/em&gt; unidade, porém uma unidade possui &lt;em&gt;vários&lt;/em&gt; alunos. Eles se relacionam da seguinte forma, a tabela aluno tem um campo que se relaciona diretamente com o campo do código da unidade na tabela unidade, não sendo obrigatório os dois campos terem o mesmo nome, sendo apenas obrigatório os dois terem o mesmo tipo, se você não conhece SQL pode parecer complicado, mas posso assegurar-lhe que não é.&lt;br /&gt;&lt;br /&gt;É nesse caso, em que o INNER JOIN vai ser usado, Veja:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$SQL = "SELECT Aluno.nome, Unidade.unidade";&lt;br /&gt;&lt;/code&gt;Seleciona o campo nome da tabela aluno e campo unidade da tabela unidade&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$SQL .= " FROM Aluno";&lt;/code&gt;&lt;br /&gt;A origem é a tabela Aluno. Isso significa que a tabela Aluno é o lado UM de um relacionamento, e com isso, A pesquisa é feita mais rápida;Você poderia colocar a tabela Unidade como origem.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$SQL .= " INNER JOIN Unidade";&lt;/code&gt;&lt;br /&gt;A tabela Aluno será ligada a tabela Unidade.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$SQL .= " ON Aluno.cod_unidade = Unidade.cod_unidade";&lt;/code&gt;&lt;br /&gt;Faz-se aqui o relacionamento das tabelas.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$SQL .= " ORDER BY Aluno.Nome";&lt;/code&gt;&lt;br /&gt;Coloquei que a pesquisa vai ser exibido na ordem alfabética dos nomes dos alunos.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Ps.: Fiz essa pesquisa com o php, por isso está lá um .=, pois isso no php significa que estou concatenando a string SQL.&lt;br /&gt;&lt;br /&gt;*Foi um exemplo simples, claro que nesse exemplo precisaria de mais tabelas.&lt;br /&gt;&lt;br /&gt;Junto com o &lt;strong&gt;INNER JOIN&lt;/strong&gt;, existem ainda o &lt;strong&gt;LEFT JOIN&lt;/strong&gt; e o &lt;strong&gt;RIGHT JOIN&lt;/strong&gt;, que funcionam de maneira semelhante. O &lt;em&gt;INNER JOIN&lt;/em&gt;, faz o relacionamento entre duas tabelas e depois exibe o que está nas duas tabelas, já o &lt;em&gt;LEFT JOIN &lt;/em&gt;faz a mesma coisa, porém só exibe os dados da tabela da esquerda (a primeira tabela que foi declarada) e o &lt;em&gt;RIGHT JOIN&lt;/em&gt;, dou-lhe uma bala juquinha se você acertar...&lt;br /&gt;&lt;br /&gt;Exatamente o que você pensou, faz o mesmo que o &lt;em&gt;LEFT JOIN&lt;/em&gt;, porém exibe apenas os dados da tabela da direita (a segunda tabela que foi declarada).&lt;br /&gt;Com isso despeço-me, até a próxima&lt;br /&gt;&lt;br /&gt;Fuiii...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/489365202656835633-8957117653969909657?l=coisasdeweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coisasdeweb.blogspot.com/feeds/8957117653969909657/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=489365202656835633&amp;postID=8957117653969909657' title='6 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/8957117653969909657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/8957117653969909657'/><link rel='alternate' type='text/html' href='http://coisasdeweb.blogspot.com/2007/05/inner-join-sql.html' title='INNER JOIN - SQL'/><author><name>ramon</name><uri>http://www.blogger.com/profile/04392282785585991989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-489365202656835633.post-1651989062709399966</id><published>2007-05-21T16:08:00.000-03:00</published><updated>2007-05-21T16:14:43.727-03:00</updated><title type='text'>Recursividade - Usar ou não usar?</title><content type='html'>Olhando a estatística de visitas no blog, percebi, que muitas pessoas visitaram, com a seguinte pesquisa “recursividade” e eu tinha falado antes que abordaria o assunto, então trago à tona esse assunto, recursividade é uma técnica que trata-se da função chamar ela própria. exemplificando:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;strong&gt;Function fatorial( n )&lt;br /&gt;    {&lt;br /&gt;      if( n==0 )&lt;br /&gt;         return 1;&lt;br /&gt;      else&lt;br /&gt;         return n * factorial(n-1);&lt;br /&gt;    }&lt;br /&gt;&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;No exemplo acima, irá ser feito o cálculo da fatorial do número n, ao invés de usarmos um comando de repetição, faz-se várias chamadas dela mesma. Recursividade usa mais memória, pois está chamando a própria função várias vezes. Claro que em um exemplo como esse, você utilizaria um comando de repetição, mas há situações as quais o uso recursivo da função vai cair como uma luva.&lt;br /&gt;&lt;br /&gt;Tem que tomar-se o cuidado de terminar a recursividade.&lt;br /&gt;&lt;br /&gt;Qualquer dúvida é só postar.&lt;br /&gt;&lt;br /&gt;Fuiii...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/489365202656835633-1651989062709399966?l=coisasdeweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coisasdeweb.blogspot.com/feeds/1651989062709399966/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=489365202656835633&amp;postID=1651989062709399966' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/1651989062709399966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/1651989062709399966'/><link rel='alternate' type='text/html' href='http://coisasdeweb.blogspot.com/2007/05/recursividade-usar-ou-no-usar.html' title='Recursividade - Usar ou não usar?'/><author><name>ramon</name><uri>http://www.blogger.com/profile/04392282785585991989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-489365202656835633.post-9196690669531492925</id><published>2007-05-21T16:06:00.000-03:00</published><updated>2007-05-21T16:22:00.199-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='DOM'/><category scheme='http://www.blogger.com/atom/ns#' term='W3C'/><title type='text'>addEventListener ou será AttachEvent</title><content type='html'>addEventListener, documentado pela W3C, é uma forma de atribuir evento a um determinado objeto.&lt;br /&gt;&lt;br /&gt;Sintaxe:&lt;br /&gt;&lt;br /&gt;objeto.addEventListener(evento, funcao, captura)&lt;br /&gt;&lt;br /&gt;A função é executada, quando o evento do objeto é acionado. E o último parâmetro indica se os eventos ocorridos dentro da função deverão iniciar a chamada para outros eventos. Exemplificando:&lt;br /&gt;&lt;br /&gt;window.addEventListener("load", function() { alert("Olá Mundo."); }, true);&lt;br /&gt;&lt;br /&gt;Esse é um exemplo simples de uso, quando a página estiver sendo carregada exibimos um alert na tela, com a mensagem, típica, "Olá Mundo.". No entanto, o excelentíssímo IEca, não irá rodar isso. Apesar, da W3C ser responsável pela padronização da web, o IEca não reconhece essa função, para isso a microsoft inventou o AttachEvent, que funciona de forma similar. Abaixo vai o código para os dois tipos de browsers:&lt;br /&gt;&lt;br /&gt;&lt;CODE&gt;function OlaMundo(){&lt;br /&gt;alert("Olá Mundo!");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function addEvent(obj, evType, fn){&lt;br /&gt;if (obj.addEventListener) // Usuário Inteligente&lt;br /&gt;obj.addEventListener(evType, fn, true)&lt;br /&gt;if (obj.attachEvent) // Usuário do IEca&lt;br /&gt;obj.attachEvent("on" + evType, fn)&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;addEvent(window, "load", OlaMundo());&lt;/CODE&gt;&lt;br /&gt;&lt;br /&gt;Até aqui, sem problemas, tirando uma questão simples, porque fazer isso se eu posso perfeitamente atribuir evento no HTML? Como no exemplo:&lt;br /&gt;&lt;br /&gt;&amp;lt;input name="meubotao" onclick="Minhafuncao();" type="button" /&amp;gt;&lt;br /&gt;&lt;br /&gt;O motivo é o &lt;a href="http://pt.wikipedia.org/wiki/Acoplamento"&gt;acoplamento&lt;/a&gt; (acoplamento não é legal). Em Web Standards a premissa é separar aparência(CSS), de estrutura(HTML) e de comportamento(Javascript), dessa forma você consegue separar estrutura de comportamento.&lt;br /&gt;&lt;br /&gt;Fuiii...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/489365202656835633-9196690669531492925?l=coisasdeweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coisasdeweb.blogspot.com/feeds/9196690669531492925/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=489365202656835633&amp;postID=9196690669531492925' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/9196690669531492925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/9196690669531492925'/><link rel='alternate' type='text/html' href='http://coisasdeweb.blogspot.com/2007/05/addeventlistener-ou-ser.html' title='addEventListener ou será AttachEvent'/><author><name>ramon</name><uri>http://www.blogger.com/profile/04392282785585991989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-489365202656835633.post-8435493153213694541</id><published>2007-05-21T16:00:00.000-03:00</published><updated>2007-05-21T16:01:32.707-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='XML'/><title type='text'>CDATA e suas características</title><content type='html'>CDATA - Antes não dava muita importância à CDATA, podes crer eu era louco, mas com o decorrer do tempo, percebi que isso estava em todos os lugares, era só eu ver um código com XML que lá estava o , perdoe-me a expressão, maldito CDATA, com o tempo aprendi a canalisar a minha raiva e transformei essa raiva em motivos para estuda-lo (tá legal eu viajei um pouquinho, mas eu gosto de ser dramático). Seções CDATA são usadas para preservar blocos de texto que seriam interpretados. As seções CDATA começam com a string "&amp;lt;![CDATA[" e terminam com a string "]]&amp;gt;". A string ']]&amp;gt;' não pode ocorrer dentro da seção CDATA. Essa foi uma definição que eu vi muito na net, porém essa informação é incompleta, pois com o CDATA, você pode trabalhar com expressões regulares ( expessões regulares para quem não sabe, normalmente é um padrão utilizado para se fazer uma busca e também pode-se ser usado para construir um padrão para uma string), Segue abaixo um exemplo de ER, de uma string cpf, onde determina o que deve haver na ER (expressão regular):&lt;br /&gt;([0-9]{3}\.) {3} -([0-9]) {2}&lt;br /&gt;&lt;br /&gt;Parece um bicho de sete cabeças, mas é molinho. E você pode fazer esse tipo de coisa com o CDATA, imagina a infinitade de possibilitades que tem-se com isso.&lt;br /&gt;&lt;br /&gt;Não vou colocar um exemplo prático aqui, pois eu acredito que só vou complicar, irei passar dois links bons, um fala sobre apenas Expressões Regulares e o outro expressões regulares com CDATA.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://guia-er.sourceforge.net/index.html" target="_blank"&gt;&lt;em&gt;Expressões regulares&lt;/em&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;a href="http://elcio.com.br/rss/?cont=5" target="_blank"&gt;Expressões Regulares com CDATA&lt;/a&gt; &lt;/em&gt;&lt;br /&gt;&lt;br /&gt;ps: Utiliza-se muito E.R. para fazer a validação de campos como e-mail, cpf, rg etc.&lt;br /&gt;&lt;br /&gt;Fuiii...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/489365202656835633-8435493153213694541?l=coisasdeweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coisasdeweb.blogspot.com/feeds/8435493153213694541/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=489365202656835633&amp;postID=8435493153213694541' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/8435493153213694541'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/8435493153213694541'/><link rel='alternate' type='text/html' href='http://coisasdeweb.blogspot.com/2007/05/cdata-e-suas-caractersticas.html' title='CDATA e suas características'/><author><name>ramon</name><uri>http://www.blogger.com/profile/04392282785585991989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-489365202656835633.post-8616974598320391769</id><published>2007-05-21T15:57:00.001-03:00</published><updated>2007-05-24T13:27:32.439-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='DOM'/><title type='text'>Titulo Editável com Javascript</title><content type='html'>Eu queria ter postado ontem, porém por motivos de força maior, não pude fazê-lo.&lt;br /&gt;Depois de ter enchido a tela de explicações sobre DOM, talvez não tenha elucidado uma maneira legal o uso de DOM, lembrei-me de um site o qual gosto &lt;a href="http://www.netvibes.com" target="_blank"&gt;NetVibes&lt;/a&gt;, lá tem várias coisa legais, mas uma me chamou a atenção, talvez pelo fato de aparentemente ser bem simples, mas isso não vem ao caso, pois bem, quando você entra no site, pode-se editar o título da página, estou falando dos dois títulos, da página e do browser, resolvi, então arregaçar as mangas e colocar o tico-teco para funcionar. O resultado, foi o seguinte:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;title&amp;gt;Título editável com JavaScript&amp;lt;/title&amp;gt;&lt;/code&gt;&lt;br /&gt;&amp;lt;!-- O css abaixo, é para o página não ficar extremamente tosca, só pra dar um estilozinho, qualquer dúvida vai no post CSS - Parte I --&amp;gt;&lt;br /&gt;&lt;code&gt;&amp;lt;style type="text/css"&amp;gt;&lt;br /&gt;#titulo {&lt;br /&gt;font-size:36px;&lt;br /&gt;font-face: "Comic Sans MS";&lt;br /&gt;color:#400;&lt;br /&gt;}&lt;br /&gt;&amp;lt;/style&amp;gt;&lt;br /&gt;&amp;lt;script type="text/javascript"&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;//Quando carregar a página ele chama essa função&lt;br /&gt;&lt;br /&gt;&lt;code&gt;window.onload = function(){&lt;br /&gt;function editartitulo(){ &lt;/code&gt;&lt;br /&gt;&lt;br /&gt;// A linha abaixo ele procura "um" elemento que tenha a id titulo, que no nosso caso o elemento é um span&lt;br /&gt;&lt;br /&gt;&lt;code&gt;var span = document.getElementById('titulo');&lt;br /&gt;span.onmouseover = function(){&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;// ele chama essa função quando o mouse passa por cima dele (span).&lt;br /&gt;&lt;br /&gt;&lt;code&gt;this.style.background = '#000000';&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;// troca a cor de fundo.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;this.title = "Clique"&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;// coloca uma tag, para o usuário saber onde clicar.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;}&lt;br /&gt;span.onmouseout = function(){&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;// Função executada quando o mouse sai de cima do span.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;this.style.background = '';&lt;br /&gt;}&lt;br /&gt;span.onclick = function(){&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;// Função executado ao clicar do mouse (no span, é claro)&lt;br /&gt;&lt;br /&gt;&lt;code&gt;var texto = this.firstChild.nodeValue;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;// Aqui começa a parte interessante, ele joga dentro da variável texto, o conteúdo do "primeiro filho", do span, que no caso é o texto contido nele, através da propriedade nodevalue.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;var input = '&amp;lt;input type="text" value="'+texto+'"&amp;gt;';&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;// Via código, como já disse antes, criamos um elemento input do tipo caixa de texto, por padrão é o conteúdo da variável texto.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;this.innerHTML = input;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;// inclui o input dentro do span&lt;br /&gt;&lt;br /&gt;&lt;code&gt;var cxtexto = this.firstChild;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;//  isso é uma forma que muita gente usa, inclusive eu, para não ficar chamando o elemento pelo "nome completo" (this.firstChild). como todo bom brasileiro, criamos apelidos para isso.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;this.onclick = null;&lt;br /&gt;this.onmouseover = null;&lt;br /&gt;cxtexto.select();&lt;/code&gt;&lt;br /&gt;// Isso é firula, é pra você não precisar selecionar tudo o que está dentro da caixa de texto, para depois digitar o que queira.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;cxtexto.onblur = function(){&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;// Função executada quando a caixa de texto perde o foco.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;this.parentNode.innerHTML = this.value;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;//o pai da caixa de texto (no caso, o span), recebe o valor da caixa de texto.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;document.title = this.value;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;// O título do documento, recebe o valor da caixa de texto&lt;br /&gt;&lt;br /&gt;&lt;code&gt;editartitulo();&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//Abaixo vai um plus do código, eu vi no site do &lt;a href="http://www.obasicodaweb.com" target="_blank"&gt;O Básico da Web&lt;/a&gt;, é pra você poder, apertando a tecla enter, fazer a entrada do texto que você digitou. :)&lt;br /&gt;// é bem simples, toda vez que você digitar algo, verifica-se qual é o código da tecla na tabela ASCII, se foi igual ao enter, código 13, a caixa de texto perde o foco.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;cxtexto.onkeypress = function(e){&lt;br /&gt;&lt;br /&gt;var keynum;&lt;br /&gt;if(window.event) // IE&lt;br /&gt;keynum = window.event.keyCode;&lt;br /&gt;else if(e.keyCode) // Netscape/Firefox/Opera&lt;br /&gt;keynum = e.which;&lt;br /&gt;if (keynum == 13) this.blur();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;editartitulo();&lt;br /&gt;}&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;&amp;lt;center&amp;gt;&amp;lt;span id="titulo"&amp;gt;Edite este título&amp;lt;/span&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;fuiii...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/489365202656835633-8616974598320391769?l=coisasdeweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coisasdeweb.blogspot.com/feeds/8616974598320391769/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=489365202656835633&amp;postID=8616974598320391769' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/8616974598320391769'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/8616974598320391769'/><link rel='alternate' type='text/html' href='http://coisasdeweb.blogspot.com/2007/05/titulo-editvel-com-javascript.html' title='Titulo Editável com Javascript'/><author><name>ramon</name><uri>http://www.blogger.com/profile/04392282785585991989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-489365202656835633.post-3000733096915216895</id><published>2007-05-20T11:07:00.001-03:00</published><updated>2007-05-20T11:08:29.502-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='DOM'/><title type='text'>Titulo Editável</title><content type='html'>Eu queria ter postado ontem, porém por motivos de força maior, não pude fazê-lo.&lt;br /&gt;Depois de ter enchido a tela de explicações sobre DOM, talvez não tenha elucidado uma maneira legal o uso de DOM, lembrei-me de um site o qual gosto &lt;a href="http://www.netvibes.com/" target="_blank"&gt;NetVibes&lt;/a&gt;, lá tem várias coisa legais, mas uma me chamou a atenção, talvez pelo fato de aparentemente ser bem simples, mas isso não vem ao caso, pois bem, quando você entra no site, pode-se editar o título da página, estou falando dos dois títulos, da página e do browser, resolvi, então arregaçar as mangas e colocar o tico-teco para funcionar. O resultado, foi o seguinte:&lt;br /&gt;&lt;em&gt;&lt;strong&gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;title&amp;gt;Título editável com JavaScript&amp;lt;/title&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;&amp;lt;!-- O css abaixo, é para o página não ficar extremamente tosca, só pra dar um estilozinho, qualquer dúvida vai no post CSS - Parte I --&amp;gt;&lt;br /&gt;&lt;em&gt;&lt;strong&gt;&amp;lt;style type="text/css"&amp;gt;&lt;br /&gt;#titulo {&lt;br /&gt;font-size:36px;&lt;br /&gt;font-face: "Comic Sans MS";&lt;br /&gt;color:#400;&lt;br /&gt;}&lt;br /&gt;&amp;lt;/style&amp;gt;&lt;br /&gt;&amp;lt;script type="text/javascript"&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;//Quando carregar a página ele chama essa função&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;strong&gt;window.onload = function(){&lt;br /&gt;function editartitulo(){ &lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;// A linha abaixo ele procura "um" elemento que tenha a id titulo, que no nosso caso o elemento é um span&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;strong&gt;var span = document.getElementById('titulo');&lt;br /&gt;span.onmouseover = function(){&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;// ele chama essa função quando o mouse passa por cima dele (span).&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;strong&gt;this.style.background = '#000000';&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;// troca a cor de fundo.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;strong&gt;this.title = "Clique"&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;// coloca uma tag, para o usuário saber onde clicar.&lt;br /&gt;&lt;strong&gt;&lt;em&gt;&lt;br /&gt;}&lt;br /&gt;span.onmouseout = function(){&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;// Função executada quando o mouse sai de cima do span.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;this.style.background = '';&lt;br /&gt;}&lt;br /&gt;span.onclick = function(){&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;// Função executado ao clicar do mouse (no span, é claro)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;var texto = this.firstChild.nodeValue;&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;// Aqui começa a parte interessante, ele joga dentro da variável texto, o conteúdo do "primeiro filho", do span, que no caso é o texto contido nele, através da propriedade nodevalue.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;var input = '&amp;lt;input type="text" value="'+texto+'"&amp;gt;';&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;// Via código, como já disse antes, criamos um elemento input do tipo caixa de texto, por padrão é o conteúdo da variável texto.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;this.innerHTML = input;&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;// inclui o input dentro do span&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;var cxtexto = this.firstChild;&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;//  isso é uma forma que muita gente usa, inclusive eu, para não ficar chamando o elemento pelo "nome completo" (this.firstChild). como todo bom brasileiro, criamos apelidos para isso.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;this.onclick = null;&lt;br /&gt;this.onmouseover = null;&lt;br /&gt;cxtexto.select();&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;// Isso é firula, é pra você não precisar selecionar tudo o que está dentro da caixa de texto, para depois digitar o que queira.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;cxtexto.onblur = function(){&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;// Função executada quando a caixa de texto perde o foco.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;this.parentNode.innerHTML = this.value;&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;//o pai da caixa de texto (no caso, o span), recebe o valor da caixa de texto.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;document.title = this.value;&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;// O título do documento, recebe o valor da caixa de texto&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;editartitulo();&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;//recursividade, em outro post eu explico isso&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//Abaixo vai um plus do código, eu vi no site do &lt;a href="http://www.obasicodaweb.com/" target="_blank"&gt;O Básico da Web&lt;/a&gt;, é pra você poder, apertando a tecla enter, fazer a entrada do texto que você digitou. :)&lt;br /&gt;// é bem simples, toda vez que você digitar algo, verifica-se qual é o código da tecla na tabela ASCII, se foi igual ao enter, código 13, a caixa de texto perde o foco.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;cxtexto.onkeypress = function(e){&lt;br /&gt;&lt;br /&gt;var keynum;&lt;br /&gt;if(window.event) // IE&lt;br /&gt;keynum = window.event.keyCode;&lt;br /&gt;else if(e.keyCode) // Netscape/Firefox/Opera&lt;br /&gt;keynum = e.which;&lt;br /&gt;if (keynum == 13) this.blur();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;editartitulo();&lt;br /&gt;}&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;&amp;lt;center&amp;gt;&amp;lt;span id="titulo"&amp;gt;Edite este título&amp;lt;/span&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;ps: Não seria necessário colocar o código no javascript para o onmouseover e onmouseout para trocar a cor de fundo do span, bastaria colocar hover no css, mas o nosso excelentissímo IEca não aceita.&lt;br /&gt;&lt;br /&gt;Como diria a minha vovózinha, mamão-com-açúcar. Só mais uma coisa, como deve ter percebido, usa-se muito a variável this, e eu não comentei sobre o uso dela, é que isso já é um assunto, para os próximos posts.&lt;br /&gt;&lt;br /&gt;ps: Eu não coloquei no título para não assustar, mas isso é um exemplo de DHTML.&lt;br /&gt;&lt;br /&gt;fuiii...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/489365202656835633-3000733096915216895?l=coisasdeweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coisasdeweb.blogspot.com/feeds/3000733096915216895/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=489365202656835633&amp;postID=3000733096915216895' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/3000733096915216895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/3000733096915216895'/><link rel='alternate' type='text/html' href='http://coisasdeweb.blogspot.com/2007/05/titulo-editvel.html' title='Titulo Editável'/><author><name>ramon</name><uri>http://www.blogger.com/profile/04392282785585991989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-489365202656835633.post-8466691886440284685</id><published>2007-05-20T10:02:00.000-03:00</published><updated>2007-05-20T11:07:00.183-03:00</updated><title type='text'>O Recomeço...</title><content type='html'>Nesse novo blog tudo continua como antes, com algumas modificações, tomará que goste das modificações, mas ainda tem muita coisa para ser mudada e você sabe como é mudança, tem muita coisa para ser feita, Desculpe pelo transtorno, mas já já trarei assuntos interessantíssimos aqui.  Dúvidas, sugestões, críticas comentei aqui, sempre é muito gratificantes os comentários. Agora vou continuar com a mudanças de posts.&lt;br /&gt;&lt;br /&gt;ps: Sou totalmente desprovido de imaginação, então não estranhe o nome do blog e també sou muito preguiçoso, vou trazer apenas alguns posts do meu outro blog. :)&lt;br /&gt;&lt;br /&gt;fuiii...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/489365202656835633-8466691886440284685?l=coisasdeweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coisasdeweb.blogspot.com/feeds/8466691886440284685/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=489365202656835633&amp;postID=8466691886440284685' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/8466691886440284685'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/489365202656835633/posts/default/8466691886440284685'/><link rel='alternate' type='text/html' href='http://coisasdeweb.blogspot.com/2007/05/o-recomeo.html' title='O Recomeço...'/><author><name>ramon</name><uri>http://www.blogger.com/profile/04392282785585991989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
