






<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
	xmlns:media="http://search.yahoo.com/mrss/"
>

<channel>
	<title>Renie</title>
	<atom:link href="http://renie.com.br/site/feed/" rel="self" type="application/rss+xml" />
	<link>http://renie.com.br/site</link>
	<description>Learning by yourself</description>
	<lastBuildDate>Thu, 18 Feb 2010 00:57:03 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<!-- podcast_generator="podPress/8.8" - maintenance_release="8.8.4" -->
		<copyright>Copyright &#xA9; Renie 2010 </copyright>
		<managingEditor>renie@renie.com.br (Renie)</managingEditor>
		<webMaster>renie@renie.com.br (Renie)</webMaster>
		<category>posts</category>
		<itunes:keywords></itunes:keywords>
		<itunes:subtitle></itunes:subtitle>
		<itunes:summary>Learning by yourself</itunes:summary>
		<itunes:author>Renie</itunes:author>
		<itunes:category text="Society &amp; Culture"/>
		<itunes:owner>
			<itunes:name>Renie</itunes:name>
			<itunes:email>renie@renie.com.br</itunes:email>
		</itunes:owner>
		<itunes:block>No</itunes:block>
		<itunes:explicit>no</itunes:explicit>
		<itunes:image href="http://renie.com.br/site/wp-content/plugins/podpress/images/powered_by_podpress_large.jpg" />
		<image>
			<url>http://renie.com.br/site/wp-content/plugins/podpress/images/powered_by_podpress.jpg</url>
			<title>Renie</title>
			<link>http://renie.com.br/site</link>
			<width>144</width>
			<height>144</height>
		</image>
		<item>
		<title>MathML &#8211; Cálculos no browser sem imagens</title>
		<link>http://renie.com.br/site/2010/01/29/mathml-calculos-no-browser-sem-imagens/</link>
		<comments>http://renie.com.br/site/2010/01/29/mathml-calculos-no-browser-sem-imagens/#comments</comments>
		<pubDate>Fri, 29 Jan 2010 15:27:11 +0000</pubDate>
		<dc:creator>renie</dc:creator>
				<category><![CDATA[Artigos]]></category>
		<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Tutoriais Desenvolvimento]]></category>
		<category><![CDATA[mathml]]></category>

		<guid isPermaLink="false">http://renie.com.br/site/?p=392</guid>
		<description><![CDATA[No post anterior falei da existência de uma linguagem de marcação chamada MathML, que é baseada em XML e serve para representar melhor fórmulas matemáticas na web. Resolvi então mostrar algumas tags e como funciona. Vocês vão reparar que para os resultados eu usarei imagens, por um simples motivo: alguns navegadores precisam de plugin para [...]]]></description>
			<content:encoded><![CDATA[<p><img style="margin: 5px; display: inline; width: 150px; height: 150px;" src="http://renie.com.br/img/mathml_logo.JPG" alt="MathML Logo" align="left" />No post anterior falei da existência de uma linguagem de marcação chamada MathML, que é baseada em XML e serve para representar melhor fórmulas matemáticas na web. Resolvi então mostrar algumas tags e como funciona. Vocês vão reparar que para os resultados eu usarei imagens, por um simples motivo: alguns navegadores precisam de plugin para entender o código( como o IE),  mas se vocês testarem esses código no Firefox, por exemplo, poderão ver que funciona <img src='http://renie.com.br/site/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Farei no mesmo esquema de sempre, vou colocar o código e uma explicação dele abaixo, acho mais fácil dessa forma.</p>
<pre class="brush: xml;">

&lt;!DOCTYPE math PUBLIC &quot;-//W3C//DTD MathML 2.0//EN&quot; &quot;http://www.w3.org/Math/DTD/mathml2/mathml2.dtd&quot;&gt;
&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;
   &lt;mrow&gt;
     &lt;mi&gt;a&lt;/mi&gt;
     &lt;msup&gt;
       &lt;mi&gt;x&lt;/mi&gt;
       &lt;mn&gt;2&lt;/mn&gt;
     &lt;/msup&gt;
     &lt;mo&gt;+&lt;/mo&gt;
     &lt;mi&gt;b&lt;/mi&gt;
     &lt;mi&gt;x&lt;/mi&gt;
     &lt;mo&gt;+&lt;/mo&gt;
     &lt;mi&gt;c&lt;/mi&gt;
  &lt;/mrow&gt;
&lt;/math&gt;
</pre>
<p>Pode parecer chato/trabalhoso, na verdade é mesmo hahaha. Primeiramente incluí o <a href="http://renie.com.br/site/2010/01/28/doctype-what-a-hell-is-that/">doctype</a> , disse de onde que to pegando o namespace do XML e só então começa a brincadeira. Primeiro uma &lt;mrow&gt; que é só uma inclusão de uma linha onde estará a fórmula, aí vem a tag &lt;mi&gt; que diz que aquilo é somente um identificador, &lt;msup&gt; informa que seus filhos correspondem a uma potência, &lt;mn&gt; é para numeros e &lt;mo&gt; pra operadores. Viu não foi tão dificil. Esse código resultaria em:</p>
<p><img src="http://renie.com.br/img/mathml1.JPG" alt="Equação 2°grau" /></p>
<p>Aí podemos brincar com outras tags como &lt;mfrac&gt; para frações, aí no caso usariamos 2 &lt;mrow&gt; para fazer o numerador e o denominador;&lt;msqrt&gt; para raíz quadrada, tudo que estiver entre a abertura e o fechamento da tag estará dentro do simbolo da raíz;&lt;msub&gt; para fazer logaritmo por exemplo;&lt;mroot&gt; com &lt;mn&gt; dentro, para fazer raiz de qualquer grau&#8230; enfim aí é só deixar a imaginação. No código abaixo uso mais algumas tags.</p>
<pre class="brush: xml;">
&lt;!DOCTYPE math PUBLIC &quot;-//W3C//DTD MathML 2.0//EN&quot; &quot;http://www.w3.org/Math/DTD/mathml2/mathml2.dtd&quot;&gt;&lt;/pre&gt;
&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;
 &lt;mrow&gt;
    &lt;mi&gt;x&lt;/mi&gt;
    &lt;mo&gt;=&lt;/mo&gt;
      &lt;mfrac&gt;
        &lt;mrow&gt;
           &lt;mo form=&quot;prefix&quot;&gt;&amp;#x2212;&lt;!-- &amp;minus; --&gt;&lt;/mo&gt;
           &lt;mi&gt;b&lt;/mi&gt;
           &lt;mo&gt;&amp;#x00B1;&lt;!-- &amp;PlusMinus; --&gt;&lt;/mo&gt;
           &lt;msqrt&gt;
             &lt;msup&gt;
                &lt;mi&gt;b&lt;/mi&gt;
                &lt;mn&gt;2&lt;/mn&gt;
             &lt;/msup&gt;
             &lt;mo&gt;&amp;#x2212;&lt;!-- &amp;minus; --&gt;&lt;/mo&gt;
             &lt;mn&gt;4&lt;/mn&gt;
             &lt;mi&gt;a&lt;/mi&gt;
             &lt;mi&gt;c&lt;/mi&gt;
            &lt;/msqrt&gt;
        &lt;/mrow&gt;
        &lt;mrow&gt;
          &lt;mn&gt;2&lt;/mn&gt;
          &lt;mi&gt;a&lt;/mi&gt;
        &lt;/mrow&gt;
     &lt;/mfrac&gt;
 &lt;/mrow&gt;
&lt;/math&gt;
</pre>
<p>Que resultaria em:</p>
<p><img src="http://renie.com.br/img/mathml2.JPG" alt="Bháskara" /><br />
E poraí vai.</p>
<p>Tirei o print também de uma outra fórmula que achei, foi feita com MathML eu garanto, mas não tive saco de tentar refazer pra postar aqui, então fica como exercício pra quem quiser brincar hahahahaha.</p>
<p><img src="http://renie.com.br/img/mathml3.JPG" alt="Fórmula of doom" /></p>
<p>Abraço</p>
<p>[ UPDATE ]</p>
<p>Vale lembrar que para usar o doctype correto com MathML no meio do XHTML, temos que dizer que usaremos as duas linguagens de marcação. ficaria assim:</p>
<h4>&lt;!DOCTYPE html PUBLIC &#8220;-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN&#8221; &#8220;http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd&#8221; [  &lt;!ENTITY mathml "http://www.w3.org/1998/Math/MathML"&gt; ]&gt;</h4>
]]></content:encoded>
			<wfw:commentRss>http://renie.com.br/site/2010/01/29/mathml-calculos-no-browser-sem-imagens/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Doctype? What a hell is that?</title>
		<link>http://renie.com.br/site/2010/01/28/doctype-what-a-hell-is-that/</link>
		<comments>http://renie.com.br/site/2010/01/28/doctype-what-a-hell-is-that/#comments</comments>
		<pubDate>Thu, 28 Jan 2010 15:24:44 +0000</pubDate>
		<dc:creator>renie</dc:creator>
				<category><![CDATA[Artigos]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[w3c]]></category>
		<category><![CDATA[web standards]]></category>
		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://renie.com.br/site/?p=367</guid>
		<description><![CDATA[Muitas vezes eu corrijo amigos que insistem em omitir o doctype de seus html, aí sempre me pergutam &#8211; Pra que isso? &#8211; ou então &#8211; Ah, essa merda ferra a renderização da minha aplicação/site. Resolvi explicar qual é a dessa parada então.
O doctype, ou Document Type ou DTD,serve para dizer ao browser como ele [...]]]></description>
			<content:encoded><![CDATA[<p><img style="margin: 5px; display: inline; width: 150px; height: 150px;" src="http://renie.com.br/img/doctype.JPG" alt="Doctype" align="left" />Muitas vezes eu corrijo amigos que insistem em omitir o <em>doctype </em>de seus html, aí sempre me pergutam &#8211; Pra que isso? &#8211; ou então &#8211; Ah, essa merda ferra a renderização da minha aplicação/site. Resolvi explicar qual é a dessa parada então.</p>
<p>O <em>doctype, ou Document Type ou DTD,serve para </em>dizer ao browser como ele deve entender e executar o seu código, pois é no <em>doctype</em> que você informa qual a versão de html ou xhtml que você está usando e se o browser deve ler tudo ao pé da letra ou se ele pode deixar passar uma coisa ou outra &#8220;errada&#8221; no seu código, como por exemplo uma tag sem fechamento.</p>
<p>Uma das grandes vantagens de você não omitir essa informação é que você ganha performance, pois você já especifica logo de cara como você quer que sua página seja entendida, ou seja, o navegador não tem o trabalho de descobrir por conta própria essa informação. Outra vantagem é de você poder validar o seu código nos padrões <a href="http://validator.w3.org/">w3C</a>. Sem contar que seu html fica a prova de más interpretações.</p>
<p>Existem os seguintes tipos de <em>doctype:</em></p>
<ul>
<li>HTML
<ul>
<li>HTML 4.01 Strict &#8211; Pra quando você segue de forma rígida as regras do HTML 4.01
<ul>
<li> <code>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"&gt;</code></li>
</ul>
</li>
<li>HTML 4.01 Transitional &#8211; Pra quando você está migrando de regras mais antigas pras mais novas
<ul>
<li> <code>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"&gt;</code></li>
</ul>
</li>
</ul>
<ul>
<li>HTML 4.01 Frameset &#8211; Pra quando você está usando frames (eca!)
<ul>
<li> <code>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"&gt;</code></li>
</ul>
</li>
<li>HTML 3.2 &#8211; Só a título de curiosidade
<ul>
<li> <code>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"&gt;</code></li>
</ul>
</li>
<li>HTML 2.0 &#8211; Só a título de curiosidade
<ul>
<li> <code>&lt;!DOCTYPE html PUBLIC "-//IETF//DTD HTML 2.0//EN"&gt;</code></li>
</ul>
</li>
</ul>
</li>
<li>XHTML
<ul>
<li>XHTML 1.0 Strict &#8211; Pra quando você segue de forma rígida as regras do XHTML 1.0
<ul>
<li> <code>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;</code></li>
</ul>
</li>
<li>XHTML 1.0 Transitional &#8211; Pra quando você está migrando de regras mais antigas pras mais novas
<ul>
<li> <code>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"</code></li>
</ul>
</li>
</ul>
<ul>
<li>XHTML 1.0 Frameset &#8211; Pra quando você está usando frames (eca! denovo)
<ul>
<li> <code>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"&gt;</code></li>
</ul>
</li>
<li>XHTML 1.1 DTD
<ul>
<li> <code>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"  "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"&gt;</code></li>
</ul>
</li>
<li>XHTML 1.1 Basic DTD
<ul>
<li> <code>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.1//EN" "http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd"&gt;</code></li>
</ul>
</li>
</ul>
</li>
<li>MathML
<ul>
<li>MathML 2.0
<ul>
<li> <code>&lt;!DOCTYPE math PUBLIC "-//W3C//DTD MathML 2.0//EN"	"http://www.w3.org/TR/MathML2/dtd/mathml2.dtd"&gt;</code></li>
</ul>
</li>
<li>MathML 1.01
<ul>
<li> <code>&lt;!DOCTYPE math SYSTEM "http://www.w3.org/Math/DTD/mathml1/mathml.dtd"&gt;</code></li>
</ul>
</li>
<li>MathML 2.0 + XHTML 1.1
<ul>
<li> <code>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN" "http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [  &lt;!ENTITY mathml "http://www.w3.org/1998/Math/MathML"&gt; ]&gt;</code></li>
</ul>
</li>
</ul>
</li>
</ul>
<p>É isso aí,  qualquer dia eu posto algo sobre MathML. Mas só pra não ficar no vazio, MathML é uma linguagem também de marcação, baseada em XML, que serve para representar melhor fórmulas e operações matemáticas, infezlimente são poucos os browsers que consegue interpretar de maneira correta essa linguagem, alguns precisam de um player pra isso. Mas é interessante. Meio inútil pra maior parte dos desenvolvedores, mas quem sabe um dia vc pode precisar <img src='http://renie.com.br/site/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  . Vale a pena dar uma pesquisada superficial na net, só pra ficar por dentro do assunto.</p>
]]></content:encoded>
			<wfw:commentRss>http://renie.com.br/site/2010/01/28/doctype-what-a-hell-is-that/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Tem que ter o DOM(gerando e parindo)</title>
		<link>http://renie.com.br/site/2010/01/27/tem-que-ter-o-domgerando-e-parindo/</link>
		<comments>http://renie.com.br/site/2010/01/27/tem-que-ter-o-domgerando-e-parindo/#comments</comments>
		<pubDate>Wed, 27 Jan 2010 16:01:44 +0000</pubDate>
		<dc:creator>renie</dc:creator>
				<category><![CDATA[Tutoriais Desenvolvimento]]></category>
		<category><![CDATA[DOM]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://renie.com.br/site/?p=362</guid>
		<description><![CDATA[Depois de aprender de que se trata DOM, o que é árvore, acessar e alterar elementos e navegar pelos filhos desses elementos, só nós resta aprender a criar e remover elementos.
Para fazer isso utilizaremos um método do objeto document chamado createElement . Esse método é muito simples de ser utilizado, basta que passemos como parâmetro [...]]]></description>
			<content:encoded><![CDATA[<p><img style="margin: 5px; display: inline; width: 150px; height: 150px;" src="http://renie.com.br/img/javascript_logo.jpg" alt="Logo do Javascript" align="left" />Depois de aprender de que se trata DOM, o que é árvore, acessar e alterar elementos e navegar pelos filhos desses elementos, só nós resta aprender a criar e remover elementos.</p>
<p>Para fazer isso utilizaremos um método do objeto <em>document</em> chamado <em>createElement</em> . Esse método é muito simples de ser utilizado, basta que passemos como parâmetro o nome do elemento que desejamos criar, seguindo a seguin sintaxe:</p>
<h3>document.createElement(&#8220;nomeDoElemento&#8221;)</h3>
<p>Depois basta adicionar o elemento na página utilizando o método <em>appendChild </em>que pode ser chamado em qualquer elemento já existente no seu html. Um exemplo pra clarear:</p>
<pre class="brush: jscript; html-script: true;">

&lt;html&gt;
&lt;head&gt;
   &lt;script language=&quot;javascript&quot; type=&quot;text/javascript&quot;&gt;
         function criarNovoElemento(){

             var novaLinha   = document.createElement(&quot;tr&quot;);
             var novaCelula1 = document.createElement(&quot;td&quot;);
             var novaCelula2 = document.createElement(&quot;td&quot;);

             novaCelula1.appendChild(document.createTextNode(&quot;Linha Criada Via DOM&quot;));
             novaCelula2.appendChild(document.createTextNode(&quot;Linha Criada Via DOM&quot;));

             novaLinha.appendChild(novaCelula1);
             novaLinha.appendChild(novaCelula2);

             document.getElementById(&quot;tabela&quot;).getElementsByTagName(&quot;tbody&quot;)[0].appendChild(novaLinha);

         }
    &lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;button onclick=&quot;criarNovoElemento()&quot;&gt;Criar&lt;/button&gt;

&lt;table id=&quot;tabela&quot; border=&quot;1&quot;&gt;
     &lt;tbody&gt;
        &lt;tr&gt;
          &lt;td&gt;Linha Original&lt;/td&gt;
          &lt;td&gt;Linha Original&lt;/td&gt;
        &lt;/tr&gt;
     &lt;/tbody&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>Nesse código eu já tenho uma tabela no html, e cada vez que eu apertar o botão o DOM deve criar pra mim uma nova linha com duas células nessa tabela. Então quando eu entro na função eu crio 3 elementos: uma linha de tabela (tr), e duas células de tabela(td), e armazeno cada uma delas dentro de uma variável. Depois eu crio um nó de texto dentro de cada célula, com uma string qualquer. Em seguida eu coloco essas duas células dentro da linha, e por último, adiciona essa linha que eu criei dentro da tabela. E aí cabe uma observação. Porque eu não fiz a tabela sem o &lt;tbody&gt; e adicionei a linha direto na tabela? Porque se eu fizer assim, nosso amigo MICROSOFT Internet Explorer buga =D . Simples assim. Então o que eu fiz? Peguei a tabela pelo ID, aí puxei o elemento ZERO do array de nós-filhos de &#8216;tabela&#8217; que tem nome &#8216;tbody&#8217; e só então adicionei a linha. THANKS IE !! Mas na verdade eu preciso admitir que o IE esteja parcialmente correto, pois diz a w3C que o elemento TABLE deve possuir um &lt;thead&gt;, um&lt;tbody&gt; e um &lt;tfoot&gt;, ou seja, ele está seguindo o padrão recomendado. Mas sei lá, não acho que seja dá conta do IE se eu uso TBODY ou não. Enfim, não vem ao caso.</p>
<p>O fato é que a partir do que já vimos eu posso fazer uma firulinha nesse código e brincar dessa forma:</p>
<pre class="brush: jscript; html-script: true;">

&lt;html&gt;
&lt;head&gt;
   &lt;script language=&quot;javascript&quot; type=&quot;text/javascript&quot;&gt;
        var contador = 1;

        function criarNovoElemento(){

          contador++;

          var novaLinha   = document.createElement(&quot;tr&quot;);
          var novaCelula1 = document.createElement(&quot;td&quot;);
          var novaCelula2 = document.createElement(&quot;td&quot;);

          novaCelula1.appendChild(document.createTextNode(&quot;Linha Criada Via DOM&quot;));
          novaCelula2.appendChild(document.createTextNode(&quot;Linha Criada Via DOM&quot;));

          if(contador%2 == 0){
             novaCelula1.className=&quot;par&quot;;
             novaCelula2.className=&quot;par&quot;;
          }
          else{
             novaCelula1.className=&quot;impar&quot;;
             novaCelula2.className=&quot;impar&quot;;
          }

          novaLinha.appendChild(novaCelula1);
          novaLinha.appendChild(novaCelula2);

          document.getElementById(&quot;tabela&quot;).getElementsByTagName(&quot;tbody&quot;)[0].appendChild(novaLinha);

       }
&lt;/script&gt;
&lt;style type=&quot;text/css&quot;&gt;

    .impar{
         background-color:#060;
     }
    .par{
         background-color:#FFF;
     }

&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;button onclick=&quot;criarNovoElemento()&quot;&gt;Criar&lt;/button&gt;

&lt;table id=&quot;tabela&quot; border=&quot;1&quot;&gt;
    &lt;tbody&gt;
       &lt;tr&gt;
         &lt;td&gt;Linha Original&lt;/td&gt;
         &lt;td&gt;Linha Original&lt;/td&gt;
       &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>Aqui faço a mesma coisa, mas mudo a cor do fundo se a célula foi par ou impar.</p>
<p>Eu ainda poderia usar um outro método chamado <em>setAttribute<code> </code></em><code>para colocar qualquer propriedade html que eu quisesse no elemento, assim:</code></p>
<pre class="brush: jscript;">

var campoTexto = document.createElement(&quot;input&quot;);

campoTexto.setAttribute&lt;code&gt;('type', 'text');&lt;/code&gt;

campoTexto.setAttribute&lt;code&gt;('id', 'meuCampoDeTexto');&lt;/code&gt;
</pre>
<p>Não fiz o código html inteiro pra deixar de lição pra vocês ( mentira, é preguiça mesmo hahaha ).</p>
<p>E como último milenar ensinamento dessa série de DOM eu apresento pra vocês o <em>removeChild</em></p>
<pre class="brush: jscript;">

function removerElemento(){

var filho = document.getElementById(&quot;tabela&quot;).getElementsByTagName(&quot;tbody&quot;)[0].lastChild;
var pai   = document.getElementById(&quot;tabela&quot;).getElementsByTagName(&quot;tbody&quot;)[0];
pai.removeChild(filho);

 }
</pre>
<p>Bem susse de fazer&#8230;</p>
<p>E assim acabo minha série sobre DOM, dentro de alguns dias postarei uma lista de funções DOM para vocês testarem. Espero ter sido útil.</p>
<p>Até mais moçada.</p>
]]></content:encoded>
			<wfw:commentRss>http://renie.com.br/site/2010/01/27/tem-que-ter-o-domgerando-e-parindo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tem que ter o DOM(desatando os nós)</title>
		<link>http://renie.com.br/site/2010/01/25/tem-que-ter-o-domdesatando-os-nos/</link>
		<comments>http://renie.com.br/site/2010/01/25/tem-que-ter-o-domdesatando-os-nos/#comments</comments>
		<pubDate>Mon, 25 Jan 2010 16:55:28 +0000</pubDate>
		<dc:creator>renie</dc:creator>
				<category><![CDATA[Tutoriais Desenvolvimento]]></category>
		<category><![CDATA[DOM]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://renie.com.br/site/?p=299</guid>
		<description><![CDATA[Nesse terceiro post da série de DOM, vamos falar sobre os nós.
No nosso primeiro post expliquei que &#8216;nó&#8217; é o nome que se dá a cada divisão da árvore do document , sendo assim hoje vou explicar como acessar esses nós.
Para acessar os nós abaixo de um outro nó, precisamos primeiro acessar esse primeiro nó [...]]]></description>
			<content:encoded><![CDATA[<p><img style="margin: 5px; display: inline; width: 150px; height: 150px;" src="http://renie.com.br/img/javascript_logo.jpg" alt="Logo do Javascript" align="left" />Nesse terceiro post da série de DOM, vamos falar sobre os nós.</p>
<p>No nosso primeiro post expliquei que &#8216;nó&#8217; é o nome que se dá a cada divisão da árvore do <em>document</em> , sendo assim hoje vou explicar como acessar esses nós.</p>
<p>Para acessar os nós abaixo de um outro nó, precisamos primeiro acessar esse primeiro nó da forma que eu mostrei no post anterior, com <em>document.getElementById</em> , e, em seguida precisamos pedir um array com os elementos filhos desse nó, isso é feito com o <em>childNodes</em>.  Ficaria então dessa forma:</p>
<h3>document.getElementById(&#8220;idDoElementoPai&#8221;).childNodes</h3>
<p>Aí precisamos fazer um for para pegar individualmente os elementos do array, assim como fizemos com o <em>getElementsByTagName .</em> Um bom código de exemplo seria:</p>
<pre class="brush: jscript; html-script: true;">&lt;/pre&gt;
&lt;html&gt;
&lt;head&gt;
&lt;script language=&quot;javascript&quot; type=&quot;text/javascript&quot;&gt;
     function mostraFilhos(){

        var elementoPai = document.getElementById(&quot;mae&quot;).childNodes;
        var resultado = &quot;&quot;;

        for(contador = 0;contador&lt;elementoPai.length;contador++){

            resultado += elementoPai[contador].nodeName;
            resultado += &quot; / &quot;;

        }

        alert(resultado);

     }
&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;div id=&quot;mae&quot;&gt;
     &lt;span&gt;&lt;/span&gt;
     &lt;input /&gt;
     &lt;blockquote&gt;&lt;/blockquote&gt;
&lt;/div&gt;
&lt;button onclick=&quot;mostraFilhos()&quot;&gt;Ver Filhos&lt;/button&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>Quando eu clicar no botão, ele vai chamar a função <em>mostraFilhos() </em>que vai pegar o array de elementos que estiverem dentro da tag com id &#8220;mae&#8221;. Aí então a função fará um <em>for </em>nesse array e vai pegar o nome de cada elemento através do <em>nodeName </em>e jogar numa variável que eu chamei de resultado. Por último dará um <em>alert() </em>no resultado. Teremos algo assim:<br />
<img src="http://renie.com.br/img/dom3.JPG" alt="Alert do array de elementos" /></p>
<p>&#8220;Po mas bugou a parada!!!&#8221;. Não meu caro, é que ocorre o seguinte, o javascript entende os espaços em branco como nós, então ele entendeu o ENTER  como nós de texto. Mas não é nada que um <em>if</em> não resolva =D.</p>
<h3>if(elementoPai[contador].nodeName != Node.TEXT_NODE)</h3>
<p>e a partir daí podemos acessar quaisquer propriedades dos nós-filhos como pegar o nome da classe, dessa forma:</p>
<pre class="brush: jscript; html-script: true;">
&lt;html&gt;
&lt;head&gt;
&lt;script language=&quot;javascript&quot; type=&quot;text/javascript&quot;&gt;
       function mostraFilhos(){

            var elementoPai = document.getElementById(&quot;mae&quot;).childNodes;
            var resultado = &quot;&quot;;

            for(contador = 0;contador&lt;elementoPai.length;contador++){

                 if(elementoPai[contador].nodeName != Node.TEXT_NODE){

                     resultado += elementoPai[contador].className;
                  }
            }

            alert(resultado);
       }
&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;div id=&quot;mae&quot;&gt;
      &lt;blockquote &gt;&lt;/blockquote&gt;
&lt;/div&gt;
&lt;button onclick=&quot;mostraFilhos()&quot;&gt;Ver Filhos&lt;/button&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>Que resultará nesse alert:<br />
<img src="http://renie.com.br/img/dom4.JPG" alt="Alert da classe de um dos nós do array de elementos" /></p>
<p>Ah, legal, você já consegue acessar todos os filhos de um nó, mas e se quiser acessar só o primeiro ou só o último filho de um nó? Simples, basta usar <em>firstChild </em>ou <em>lastChild</em> dessa forma:</p>
<pre class="brush: jscript; html-script: true;">
&lt;html&gt;
&lt;head&gt;
&lt;script language=&quot;javascript&quot; type=&quot;text/javascript&quot;&gt;
       function mostraFilhos(){

            var elementoPaiPrimeiro = document.getElementById(&quot;mae&quot;).firstChild.nodeName;

            var elementoPaiUltimo   = document.getElementById(&quot;mae&quot;).lastChild.nodeName;

            alert(&quot;Primeiro Filho:&quot;+ elementoPaiPrimeiro +&quot;\nÚltimo Filho:&quot;+ elementoPaiUltimo);

       }
&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;div id=&quot;mae&quot;&gt;
       &lt;blockquote &gt;&lt;/blockquote&gt;
&lt;/div&gt;
&lt;button onclick=&quot;mostraFilhos()&quot;&gt;Ver Filhos&lt;/button&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>Que irá gerar o seguinte alert:<br />
<img src="http://renie.com.br/img/dom5.JPG" alt="Alert do primeiro e último filho" /></p>
<p>Lembrando que ele pega aquele ENTER como elemento de texto.</p>
<p>Aí é só usar a imaginação pra brincar com os nós, acessando e modificando dinamicamente, estilos e funções de cada elemento.</p>
<p>Pra finalizar vou deixar uma tabelinha pra vocês que boiaram no Node.TEXT_NODE .<br />
<img style="border: none;" src="http://renie.com.br/img/dom6.JPG" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://renie.com.br/site/2010/01/25/tem-que-ter-o-domdesatando-os-nos/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Tem que ter o DOM(começando a brincadeira)</title>
		<link>http://renie.com.br/site/2010/01/21/tem-que-ter-o-domcomecando-a-brincadeira/</link>
		<comments>http://renie.com.br/site/2010/01/21/tem-que-ter-o-domcomecando-a-brincadeira/#comments</comments>
		<pubDate>Thu, 21 Jan 2010 15:55:09 +0000</pubDate>
		<dc:creator>renie</dc:creator>
				<category><![CDATA[Tutoriais Desenvolvimento]]></category>
		<category><![CDATA[DOM]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://renie.com.br/site/?p=296</guid>
		<description><![CDATA[Salve salve, bom vamos lá fazer a segunda parte dessa série sobre o DOM. Dessa vez vamos começar a ver algumas funções simples  que o javascript nos proporciona.
Um exemplo clássico, e eu diria que o mais utilizado seria o saudoso:
document.getElementById(&#8220;[idDesejado]&#8220;)
Vamos quebrar pra entender e começar a explicar pelo elemento document. O document vai referenciar toda [...]]]></description>
			<content:encoded><![CDATA[<p><img style="margin: 5px; display: inline; width: 150px; height: 150px;" src="http://renie.com.br/img/javascript_logo.jpg" alt="Logo do Javascript" align="left" />Salve salve, bom vamos lá fazer a segunda parte dessa série sobre o DOM. Dessa vez vamos começar a ver algumas funções simples  que o javascript nos proporciona.</p>
<p>Um exemplo clássico, e eu diria que o mais utilizado seria o saudoso:</p>
<h3>document.getElementById(&#8220;[idDesejado]&#8220;)</h3>
<p>Vamos quebrar pra entender e começar a explicar pelo elemento<em> document</em>. O<em> document</em> vai referenciar toda a sua página html, ou seja, tudo de código que você escreveu dentro do seu arquivo html, poderá ser acessado através do <em>document</em>.</p>
<p>Já o<em> getElementById </em>vai pegar o elemento<em> </em>que possuir o atributo &#8220;id&#8221; igual ao que você especificou na função. Um exemplo pra clarear as idéias:</p>
<pre class="brush: jscript; html-script: true;">

&lt;html&gt;
&lt;head&gt;
&lt;script language=&quot;javascript&quot; type=&quot;text/javascript&quot;&gt;
  function mostraElemento(){

     alert(document.getElementById(&quot;caixaDeTexto&quot;));

  }
&lt;/script&gt;

&lt;/head&gt;

&lt;body onload=&quot;mostraElemento()&quot;&gt;

   &lt;div id=&quot;caixaDeTexto&quot; /&gt;

&lt;/body&gt;

&lt;/html&gt;
</pre>
<p>Ou seja, quando acabar de carregar a pagina, o javascript vai me mostrar uma caixa de mensagem dizendo que elemento ele conseguiu pegar. Abaixo temos uma imagem da mensagem exibida pelo Firerox, as mensagens variam entre navegadores, mas fique tranquilo pois ele vai pegar o elemento da mesma forma.</p>
<p><img src="http://renie.com.br/img/dom1.JPG" alt="Alert do getElementById" /></p>
<p>Depois de pegar o elemento, você pode pegar todos os atributos dele de forma muito simples</p>
<pre class="brush: jscript; html-script: true;">
&lt;html&gt;

&lt;head&gt;

&lt;script language=&quot;javascript&quot; type=&quot;text/javascript&quot;&gt;

   function mostraElemento(){

       var div = document.getElementById(&quot;caixaDeTexto&quot;);

       alert(div.style.backgroundColor +&quot; / &quot;+div.className);

   }

&lt;/script&gt;

&lt;/head&gt;

&lt;body onload=&quot;mostraElemento()&quot;&gt;

   &lt;div id=&quot;caixaDeTexto&quot; class=&quot;divLegal&quot; style=&quot;background-color:#F00&quot;&gt;

      ola

   &lt;/div&gt;

&lt;/body&gt;

&lt;/html&gt;
</pre>
<p>Explicando. Joguei o elemento que eu capturei numa variável, pra facilitar meu trabalho, e pedi pro javascript me mostrar agora qual é a cor do fundo desse meu elemento, que eu defini na tag STYLE, e também o nome da classe CSS que está atribuída nesse elemento. O resultado foi esse:</p>
<p><img src="http://renie.com.br/img/dom2.JPG" alt="Alert do getElementById nas propriedades" /></p>
<p>Certinho&#8230; a única peculiaridade é que ele me trouxe a cor no formato RGB, e não hexadecimal, mas a cor está correta.  Seguindo esse princípio já que posso pegar o elemento, eu também posso alterar suas propriedades, dessa forma:</p>
<pre class="brush: jscript; html-script: true;">
&lt;html&gt;

&lt;head&gt;

&lt;script language=&quot;javascript&quot; type=&quot;text/javascript&quot;&gt;

     function mudarCor(){

          document.getElementById(&quot;caixaDeTexto&quot;).style.backgroundColor = &quot;#00F&quot;;

     }

&lt;/script&gt;

&lt;/head&gt;

&lt;body&gt;

   &lt;div id=&quot;caixaDeTexto&quot;style=&quot;background-color:#F00&quot;&gt;

      &lt;button onclick=&quot;mudarCor()&quot;&gt;Mudar Cor&lt;/button&gt;

   &lt;/div&gt;

&lt;/body&gt;

&lt;/html&gt;
</pre>
<p>Aí é só começar a pirar&#8230; bom, mas se quiser mudar a cor de , por exemplo, todos os elementos &lt;div&gt;. Simples!</p>
<h3>getElementsByTagName(&#8220;div&#8221;)</h3>
<pre class="brush: jscript; html-script: true;">
&lt;html&gt;

&lt;head&gt;

&lt;script language=&quot;javascript&quot; type=&quot;text/javascript&quot;&gt;

    function mudarCor(){

       var div = document.getElementsByTagName(&quot;div&quot;);

       for(contador=0;contador&lt;=div.length;contador++){

          div[contador].style.backgroundColor = &quot;#00F&quot;;

       }

    }

&lt;/script&gt;

&lt;/head&gt;

&lt;body&gt;

&lt;div style=&quot;background-color:#F00&quot;&gt;

     &lt;button onclick=&quot;mudarCor()&quot;&gt;Mudar Cor&lt;/button&gt;

&lt;/div&gt;

&lt;br /&gt;

&lt;div style=&quot;background-color:#F00&quot;&gt;

     oks

&lt;/div&gt;

&lt;br /&gt;

&lt;div style=&quot;background-color:#F00&quot;&gt;

     ola

&lt;/div&gt;

&lt;/body&gt;

&lt;/html&gt;
</pre>
<p>Mas nesse caso temos uma pequena diferença, precisamos de um laço de repetição, pois o <em>getElementsByTagName </em>não retorna apenas um elemento, mas sim um ARRAY de elementos. Então é preciso acessar individualmente cada elemento do array,  aí sim acessar suas respectivas propriedades.  Bom, por hoje vou parar por aqui, decidi que vou injetar doses homeopáticas de DOM em vocês hahaha. Amanhã mostro como acessar os nós que estão abaixo de outro elemento ( nó-filho ).  Aquele abrax galera!</p>
]]></content:encoded>
			<wfw:commentRss>http://renie.com.br/site/2010/01/21/tem-que-ter-o-domcomecando-a-brincadeira/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Tem que ter o DOM(introduzindo conceitos)</title>
		<link>http://renie.com.br/site/2010/01/20/tem-que-ter-o-dom1/</link>
		<comments>http://renie.com.br/site/2010/01/20/tem-que-ter-o-dom1/#comments</comments>
		<pubDate>Thu, 21 Jan 2010 02:13:42 +0000</pubDate>
		<dc:creator>renie</dc:creator>
				<category><![CDATA[Tutoriais Desenvolvimento]]></category>
		<category><![CDATA[DOM]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://renie.com.br/site/?p=287</guid>
		<description><![CDATA[Hoje vou direto ao ponto pois o assunto é extenso. Inclusive, vou dividir esse post e continuar daqui alguns dias.
Uma das grandes dificuldades da galera que começa a mexer com javascript é usar o DOM, Document Object Model, ou para os mais chegados &#8211; &#8220;O cara que deixa você mexer no html via javascript&#8221;.
Vou começar [...]]]></description>
			<content:encoded><![CDATA[<p><img style="margin: 5px; display: inline; width: 150px; height: 150px;" src="http://renie.com.br/img/javascript_logo.jpg" alt="Logo do Javascript" align="left" />Hoje vou direto ao ponto pois o assunto é extenso. Inclusive, vou dividir esse post e continuar daqui alguns dias.</p>
<p>Uma das grandes dificuldades da galera que começa a mexer com javascript é usar o DOM, Document Object Model, ou para os mais chegados &#8211; &#8220;O cara que deixa você mexer no html via javascript&#8221;.</p>
<p>Vou começar do BASICAAAASSO pra não ficarem dúvidas perdidas no meio do percurso.</p>
<p>Basicamente para utilizar o DOM é preciso entender o conceito de árvore e nó. Vou usar algumas imagens pra ilustrar, mas já aviso, minha noção de desenho é teeeeeeeeeensa hahaha.</p>
<h2>POR QUE &#8220;ÁRVORE&#8221;?</h2>
<p><img src="http://renie.com.br/img/arvore1.png" alt="Arvore inteira" /><br />
Entenda isso como uma árvore. Se tirarmos as folhas, teremos apenas galhos:<br />
<img src="http://renie.com.br/img/arvore2.png" alt="Arvore só galhos" /><br />
Esse galhos possuem ramificações específicas, se isolarmos esses galhos e rotacionarmos, teríamos:<br />
<img src="http://renie.com.br/img/arvore3.png" alt="Galhos isolados" /><br />
Hum já está quase parecido com o que eu preciso para explicar os conceitos, quem sabe se eu der uma organizada&#8230;<br />
<img src="http://renie.com.br/img/arvore4.png" alt="Arvore pronta para estudo" /><br />
Agora sim! Imagine agora que essa &#8216;árvore organizada&#8217; seja nosso documento html&#8230; difícil? Vejamos&#8230;</p>
<pre class="brush: xml;">
&lt;html&gt;

&lt;head&gt;&lt;/head&gt;

&lt;body&gt;

&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;

&lt;table&gt;&lt;/table&gt;

&lt;div&gt;&lt;/div&gt;

&lt;span&gt;&lt;/span&gt;

&lt;/body&gt;

&lt;/html&gt;
</pre>
<p>Entendendo que o elemento &#8220;1&#8243; fosse o &lt;body&gt;, o &#8220;2&#8243; seria a primeira&lt;div&gt; filha de &lt;body&gt;, o &#8220;6&#8243; seria um span que é filha da &lt;div&gt; número &#8220;2&#8243;, o &#8220;3&#8243; seria uma &lt;table&gt; filha de &lt;body&gt;, o &#8220;4&#8243; uma 2ª&lt;div&gt; filha de &lt;body&gt; e  o &#8220;5&#8243; seria &lt;span&gt;filha de &lt;body&gt; também. Veja.<br />
<img src="http://renie.com.br/img/arvore5.png" alt="Arvore pronta para estudo e numerada" /></p>
<p>Woooow mais que beleza!! Podemos entender que cada ponta de cada &#8216;galho&#8217;,  assim como cada ponto de ramificação, é um nó, e assim existem &#8220;nós pais&#8221;, &#8220;nós filhos&#8221;, &#8220;nós irmãos&#8221;&#8230; e com o DOM é possível &#8220;subir na árvore&#8221; e acessar cada nó individualmente, mudando seus valores, atributos e até adicionando e removendo nós. Bom Vou deixar para começar a explicar as funções no próximo post, mas já aviso, usando DOM você poderá revirar o HTML da forma que bem entender. #fikdik</p>
<p>Abraço, até a próxima</p>
]]></content:encoded>
			<wfw:commentRss>http://renie.com.br/site/2010/01/20/tem-que-ter-o-dom1/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Todos contra IE (viva la revolucion!)</title>
		<link>http://renie.com.br/site/2010/01/19/todos-contra-ie-viva-la-revolucion/</link>
		<comments>http://renie.com.br/site/2010/01/19/todos-contra-ie-viva-la-revolucion/#comments</comments>
		<pubDate>Tue, 19 Jan 2010 11:48:57 +0000</pubDate>
		<dc:creator>renie</dc:creator>
				<category><![CDATA[Notas curtas]]></category>
		<category><![CDATA[Notícias]]></category>
		<category><![CDATA[governo]]></category>
		<category><![CDATA[IE]]></category>
		<category><![CDATA[microsoft]]></category>

		<guid isPermaLink="false">http://renie.com.br/site/?p=276</guid>
		<description><![CDATA[ Essa foi massa. Ontem, com diferença de apenas 8h entre as decisões, os governos Alemão e Francês passaram a recomendar que todos os seus cidadãos substituam o Microsoft Internet Explorer por qualquer outro navegador, devido a questões de segurança. Tais vulnerabilidades permitem que hackers possam executar remotamente códigos arbitrários.
O código que pode ser utilizado [...]]]></description>
			<content:encoded><![CDATA[<p><img style="margin: 5px; display: inline; width: 150px; height: 150px;" src="http://renie.com.br/img/ie_reciclagem.png" alt="Todos contra o IE" align="left" /> Essa foi massa. Ontem, com diferença de apenas 8h entre as decisões, os governos Alemão e Francês passaram a recomendar que todos os seus cidadãos substituam o Microsoft Internet Explorer por qualquer outro navegador, devido a questões de segurança. Tais vulnerabilidades permitem que hackers possam executar remotamente códigos arbitrários.</p>
<p>O código que pode ser utilizado para explorar esse tipo de falha já foi incluído em várias ferramentas de invasão. Com ele, um agressor pode executar programas no computador de uma vítima simplesmente fazendo-a visitar uma página especialmente preparada.</p>
<p>A Microsoft diz que essas falhas não prejudicarão os usuários finais. (pfff&#8230; eu acredito sahuhsauhasu)</p>
<p>Fonte: <a href="http://tecnologia.terra.com.br/interna/0,,OI4213240-EI4803,00.html">Terra &#8211; Tecnologia</a></p>
]]></content:encoded>
			<wfw:commentRss>http://renie.com.br/site/2010/01/19/todos-contra-ie-viva-la-revolucion/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>ASCII Codes com javascript</title>
		<link>http://renie.com.br/site/2010/01/11/ascii-codes-com-javascript/</link>
		<comments>http://renie.com.br/site/2010/01/11/ascii-codes-com-javascript/#comments</comments>
		<pubDate>Mon, 11 Jan 2010 23:53:37 +0000</pubDate>
		<dc:creator>renie</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Tutoriais Desenvolvimento]]></category>
		<category><![CDATA[ascii]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://renie.com.br/site/?p=252</guid>
		<description><![CDATA[Salve, salve moçada&#8230;
Hoje vou falar sobre como saber que tecla o usuário apertou em determinado lugar utilizando a tabela ASCII ( ouço um amém dos doentes sem vida programadores assembly??).
Mas aqui no renie.com.br sempre penso no cometário cretino que alguém SEMPRE faz&#8230; e aí vem o mala:
Mas pra que complicar? é só pegar o value [...]]]></description>
			<content:encoded><![CDATA[<p><img style="margin: 5px; display: inline; width: 150px; height: 150px;" src="http://renie.com.br/img/tecla.jpg" alt="ASCII" align="left" />Salve, salve moçada&#8230;</p>
<p>Hoje vou falar sobre como saber que tecla o usuário apertou em determinado lugar utilizando a tabela ASCII ( ouço um amém dos <span style="text-decoration: line-through;">doentes</span> <span style="text-decoration: line-through;">sem vida</span> programadores assembly??).</p>
<p>Mas aqui no renie.com.br sempre penso no cometário cretino que alguém SEMPRE faz&#8230; e aí vem o mala:</p>
<blockquote><p>Mas pra que complicar? é só pegar o <em>value</em> dos campos&#8230;.</p></blockquote>
<p>Legal&#8230; e se você quiser saber se o vivente apertou a tecla <em>ctrl </em>ou <em>enter</em>&#8230;.? hã?hã&#8230;.? HÃ?!??!?!! rá aí eu quebrei suas pernas seu xarope. Podemos começar a brincar com ASCII.</p>
<p>Em javascript temos uma coisinha chamada <em>event</em>, que nada mais é do que um objeto criado automaticamente quando um evento é disparado, e esse objeto possui muitas propriedades do tal evento como: coordenadas de onde estava o ponteiro do mouse no momento do clique, qual botao do mouse foi clicado, qual o código da tecla que foi utilizada, o tipo do evento&#8230;entre outros.</p>
<p>Mas aí entra nosso querido amigo IE pra nos <span style="text-decoration: line-through;">foder</span> dificultar a vida. Assim como requisições ajax, é preciso fazer uma condição para pegar esse event, como COMO SEMPRE o IE não segue as normas da W3C aí teríamos:</p>
<blockquote><p>function keyLogger(event){</p>
<p>var evt=window.event || event</p>
<p>}</p></blockquote>
<p>evt vai receber window.event OU event(passado por parâmetro para a função), no caso window.event eh do IE e event é pros outros browsers.</p>
<p>Então para pegarmos a tecla que disparou o evento podemos usar:</p>
<blockquote><p>evt.keycode</p></blockquote>
<p>Ou seja, o código da tecla que disparou o evento. Aí basta que saibamos qual código significa o que. Aqui segue um exemplo:</p>
<blockquote><p>var evt=window.event || event;<br />
var asciiCode;<br />
var asciiCaracter;</p>
<p>asciiCode = evt.keyCode ;</p>
<p>if(asciiCode == &#8220;08&#8243;){<br />
asciiCaracter = &#8220;&lt;backspace&gt;&#8221;<br />
}<br />
else if(asciiCode == &#8220;09&#8243;){<br />
asciiCaracter = &#8220;&lt;tab&gt;&#8221;<br />
}<br />
else if(asciiCode == &#8220;13&#8243;){<br />
asciiCaracter = &#8220;&lt;enter&gt;&#8221;<br />
}<br />
else if(asciiCode == &#8220;27&#8243;){<br />
asciiCaracter = &#8220;&lt;escape&gt;&#8221;<br />
}<br />
else if(asciiCode == &#8220;32&#8243;){<br />
asciiCaracter = &#8220;&lt;espaço&gt;&#8221;<br />
}<br />
else if(asciiCode == &#8220;127&#8243;){<br />
asciiCaracter = &#8220;&lt;delete&gt;&#8221;<br />
}<br />
else{<br />
asciiCaracter = String.fromCharCode(asciiCode);<br />
}<br />
alert(asciiCaracter);</p></blockquote>
<p>Tendo isso, basta chamar numa função e pronto, um abraço pro gaitero. Pra quem quiser ver como funciona, segue abaixo um código funcional.</p>
<blockquote><p>&lt;html&gt;<br />
&lt;head&gt;<br />
&lt;script language=&#8221;javascript&#8221;&gt;<br />
function keyLogger(event){</p>
<p>var evt=window.event || event;<br />
var asciiCode;<br />
var asciiCaracter;</p>
<p>asciiCode = evt.keyCode ;</p>
<p>if(asciiCode == &#8220;08&#8243;){<br />
asciiCaracter = &#8220;&lt;backspace&gt;\n&#8221;<br />
}<br />
else if(asciiCode == &#8220;09&#8243;){<br />
asciiCaracter = &#8220;&lt;tab&gt;\n&#8221;<br />
}<br />
else if(asciiCode == &#8220;13&#8243;){<br />
asciiCaracter = &#8220;&lt;enter&gt;\n&#8221;<br />
}<br />
else if(asciiCode == &#8220;27&#8243;){<br />
asciiCaracter = &#8220;&lt;escape&gt;\n&#8221;<br />
}<br />
else if(asciiCode == &#8220;32&#8243;){<br />
asciiCaracter = &#8220;&lt;espaço&gt;\n&#8221;<br />
}<br />
else if(asciiCode == &#8220;127&#8243;){<br />
asciiCaracter = &#8220;&lt;delete&gt;\n&#8221;<br />
}<br />
else{<br />
asciiCaracter = String.fromCharCode(asciiCode);<br />
}<br />
alert(asciiCaracter);</p>
<p>}<br />
&lt;/script&gt;<br />
&lt;/head&gt;<br />
&lt;body onkeyup=&#8221;keyLogger(event)&#8221;&gt;&lt;/body&gt;<br />
&lt;/html&gt;</p></blockquote>
<p>E pra quem tiver curiosidade, segue <a href="http://renie.com.br/img/ascii.png" target="_BLANK">aqui uma tabela ascii</a> só com teclas &#8220;não-imprimíveis&#8221;, pra que vocês possam consultar mais códigos.</p>
<p>Abraço.</p>
]]></content:encoded>
			<wfw:commentRss>http://renie.com.br/site/2010/01/11/ascii-codes-com-javascript/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Help MySQL!!!</title>
		<link>http://renie.com.br/site/2010/01/06/help-mysql/</link>
		<comments>http://renie.com.br/site/2010/01/06/help-mysql/#comments</comments>
		<pubDate>Wed, 06 Jan 2010 13:07:44 +0000</pubDate>
		<dc:creator>renie</dc:creator>
				<category><![CDATA[Notas curtas]]></category>
		<category><![CDATA[Notícias]]></category>
		<category><![CDATA[banco de dados]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[Oracle]]></category>

		<guid isPermaLink="false">http://renie.com.br/site/?p=248</guid>
		<description><![CDATA[Salve galerinha of doom!!
Acho importante sempre divulgar esse tipo de coisa, até peço pra quem puder divulgar tambem, que o faça.
Pra quem está por fora, já falei sobre isso aqui no blog mas vale a pena repassar. A Oracle está em negociação para comprar a Sun, mas tá dando uma pá de rolo na união [...]]]></description>
			<content:encoded><![CDATA[<p><img style="margin: 5px; display: inline; width: 150px; height: 150px;" src="http://renie.com.br/img/helpmysql.png" alt="campanha Salve o MySQL" align="left" />Salve galerinha of doom!!</p>
<p>Acho importante sempre divulgar esse tipo de coisa, até peço pra quem puder divulgar tambem, que o faça.</p>
<p>Pra quem está por fora, já falei sobre isso aqui no blog mas vale a pena repassar. A Oracle está em negociação para comprar a Sun, mas tá dando uma pá de rolo na união européia. Segundo a última notícia postada pelo <a href="http://g1.globo.com/Noticias/Tecnologia/0,,MUL1435153-6174,00-CRIADOR+DO+MYSQL+CONSEGUE+MIL+ASSINATURAS+CONTRA+ORACLESUN.html" target="_blank">G1- Tecnologia</a>, a UE, que inicialmente tinha rejeitado a transação devido a possibilidade de acabar sendo criada uma falta de competitividade, disse em meados de Dezembro que provavelmente liberaria a transação, e desde então a Oracle tá botando pressão na galera pra sair o esquema até o fim de Janeiro.</p>
<p>Michael Widenius(uma reverêcia por favor), criador do mysql, tá fazendo de tudo pra não deixar a compra sair, já entregou um abaixo assinado com 14mil assinaturas mas ainda é pouco.</p>
<p>O foco dessa campanha que estou divulgando é chegar a 100mil assinaturas para que tenha valor judicial, ja existem cerca de 22mil votos, falta bastante ainda, então bora contribuir!!</p>
]]></content:encoded>
			<wfw:commentRss>http://renie.com.br/site/2010/01/06/help-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tableless, uma iniciação</title>
		<link>http://renie.com.br/site/2009/12/27/tableless-uma-iniciacao/</link>
		<comments>http://renie.com.br/site/2009/12/27/tableless-uma-iniciacao/#comments</comments>
		<pubDate>Sun, 27 Dec 2009 06:42:03 +0000</pubDate>
		<dc:creator>renie</dc:creator>
				<category><![CDATA[Tutoriais Desenvolvimento]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[tableless]]></category>

		<guid isPermaLink="false">http://renie.com.br/site/?p=215</guid>
		<description><![CDATA[Estava lá eu, todo pimpão por ter voltado a escrever no blog, ainda mais ter ido direto numa questão tão polêmica quando essa que resolvi abordar no último artigo, quando resolvi voltar  a divulgar no meu msn meu site.
Mas eu achei que havia ficado meio vago aquele texto. Foi quando um amigo(Diego &#8220;Japs&#8221; Oku) me [...]]]></description>
			<content:encoded><![CDATA[<p><img style="margin: 5px; display: inline; width: 150px; height: 150px;" src="http://renie.com.br/img/aprende.gif" alt="esquilo ensinando sobreo bem e o mal" align="left" />Estava lá eu, todo pimpão por ter voltado a escrever no blog, ainda mais ter ido direto numa questão tão polêmica quando essa que resolvi abordar no último artigo, quando resolvi voltar  a divulgar no meu msn meu site.</p>
<p>Mas eu achei que havia ficado meio vago aquele texto. Foi quando um amigo(Diego &#8220;Japs&#8221; Oku) me veio com as seguintes palavras mansas vindas da milenar sabedoria oriental.</p>
<blockquote><p>Porra velho, sem dar uma exemplo prático fica foda!!</p></blockquote>
<p>Sendo assim, vamos ao primeiro exemplo prático, temos aqui um layout muito simples e comum , o clássico:</p>
<ul>
<li>Topo</li>
<li>Menu Lateral</li>
<li>Conteúdo ( ao lado direito do menu )</li>
</ul>
<p>Com tabelas teríamos uma estrutura HTML bem simples parecida com isso:</p>
<blockquote><p>&lt;table&gt;</p>
<p>&lt;tr&gt;</p>
<p>&lt;td colspan=&#8221;2&#8243; id=&#8221;cabecalho&#8221;&gt;<br />
&amp;nbsp;<br />
&lt;/td&gt;</p>
<p>&lt;/tr&gt;</p>
<p>&lt;tr&gt;</p>
<p>&lt;td id=&#8221;menu&#8221;&gt;<br />
&amp;nbsp;<br />
&lt;/td&gt;<br />
&lt;td&gt;<br />
&amp;nbsp;<br />
&lt;/td&gt;</p>
<p>&lt;/tr&gt;</p>
<p>&lt;/table&gt;</p></blockquote>
<p>E um CSS assim:</p>
<blockquote><p>table{<br />
border: 1px solid #000000;<br />
border-collapse:collapse;<br />
width:100%;<br />
height:100%;<br />
}<br />
td{<br />
border: 1px solid #000000;<br />
}<br />
#cabecalho{<br />
height:20%;<br />
}<br />
#menu{<br />
width:20%;<br />
}</p></blockquote>
<p>Acho que como é um tutorial iniciante, cabe aqui uma breve explicação dos códigos acima.</p>
<p>Começarei pelo HTML.</p>
<p>Temos uma tabela( &lt;table&gt; ), com duas linhas( &lt;tr&gt; ). Sendo que a primeira linha possui apenas uma célula( &lt;td&gt; ) que ocupa na verda o espaço onde deveriam haver 2 células ( colspan=&#8221;2&#8243; ), essa linha seria o topo da nossa página. E a segunda linha possui 2 células, sendo uma o menu da nossa página e outra o conteúdo.</p>
<p>E dando sequencia pelo CSS&#8230;</p>
<p>Defini que todas as tags &lt;table&gt; terão (pela ordem):</p>
<ul>
<li>Borda de 1pixel, sólida e de cor preta</li>
<li>A tabela deve compartilhar as bordas com as células ( para que não existam bordas nas células e bordas na tabela, ficando assim duplicadas  )</li>
<li>Largura terá 100% do tamanho da página</li>
<li>Altura terá 100% do tamanho da página</li>
</ul>
<p>Também defini que:</p>
<ul>
<li>As células terão bordas de 1pixel, sólidas e de cor preta</li>
<li>A célula com id = &#8220;cabecalho&#8221; terá altura de 20% do tamanho da tabela</li>
<li>A célula com id = &#8220;menu&#8221; terá largura de 20% do tamanho da tabela</li>
</ul>
<p>Ufa! Pois bem, layout feito, funciona em qualquer navegador, você fica feliz, seu chefe/cliente/carrasco/vilão dos seus pesadelos fica feliz e pronto (<a title="Layout com tabela ( jeito porco )" href="http://www.renie.com.br/htmlDemo/comTabela.htm" target="_blank">demonstração</a>)! Vamos embora? NÃO!! Layout com tabela é pecado, quem usa não vai pro céu. Bora tirar essa tabela e fazer esse layout com as tags corretas?</p>
<p>Pois bem, o HTML ficaria assim:</p>
<blockquote><p>&lt;div id=&#8221;geral&#8221;&gt;<br />
&lt;div id=&#8221;cabecalho&#8221;&gt;<br />
&lt;/div&gt;</p>
<p>&lt;div id=&#8221;menu&#8221;&gt;<br />
&lt;/div&gt;</p>
<p>&lt;div id=&#8221;conteudo&#8221;&gt;<br />
&lt;/div&gt;<br />
&lt;/div&gt;</p></blockquote>
<p>E o CSS assim:</p>
<blockquote><p>#cabecalho{<br />
width:100%;<br />
height:20%;<br />
border-bottom:1px solid #000000;<br />
}<br />
#menu{<br />
width:20%;<br />
height:80%;<br />
float:left;<br />
border-right:1px solid #000000;<br />
}<br />
#conteudo{<br />
width:79%;<br />
height:80%;<br />
float:right;<br />
}<br />
#geral{<br />
border:1px solid #000000;<br />
width:100%;<br />
height:100%;<br />
}</p></blockquote>
<p>Vamos a explicação. A primeira mudança que podemos notar é a redução e &#8216;limpeza&#8217; no HTML. Mas a grande dúvida dos iniciantes é:  O que é essa tal de &lt;div&gt; aí? Pois bem, segundo a própria <a href="http://www.w3schools.com/tags/tag_DIV.asp" target="_blank">W3C</a> , div é um elemento para dividir uma seção ou definir um estilo em elementos colocados em blocos, ou seja, é um container genérico. Nesse caso utilizei divs para fazer 4 blocos:</p>
<ul>
<li>Um bloco &#8216;geral&#8217;, tudo que estará dentro do meu site estará contido nesse bloco, gosto de utiliza-lo pois facilita possíveis estilizações em massa na página sem necessidade de repetição de código( prometo explicar isso melhor em outro post )</li>
<li>Bloco &#8216;cabecalho&#8217;</li>
<li>Bloco &#8216;menu&#8217;</li>
<li>Bloco &#8216;conteúdo&#8217;</li>
</ul>
<p>No CSS fiz as seguintes definições:</p>
<ul>
<li>Meu bloco &#8216;geral&#8217;  tem uma borda de 1pixel, sólida e de cor preta, largura e altura de 100% do tamanho disponível no navegador</li>
<li>Meu bloco &#8216;cabecalho&#8217; tem uma largura de 100% e altura de 20% ( ambas em relação ao tamanho do elemento pai ( no caso a div &#8216;geral&#8217;  )) e uma borda de 1pixel, sólida e de cor preta só na parte de baixo</li>
<li>O bloco &#8216;menu&#8217; tem largura de 20% e altura de 80%( ambas em relação ao tamanho do elemento pai (  que também é a div &#8216;geral&#8217;  )), ela deve flutuar à esquerda dentro da div pai( esse atributo é necessário para definir a posição de 2 div na mesma linha ) e deve ter uma borda de 1pixel, sólida e de cor preta só à direita</li>
<li>E o bloco &#8216;conteúdo&#8217; tem a mesma altura da div &#8216;menu&#8217;, a largura restante da div pai (  que também é a div &#8216;geral&#8217;  ) e ela deve flutuar à direita da div pai</li>
</ul>
<p>Pronto, temos nosso layout sem tabelas(<a title="Jeito certo" href="http://www.renie.com.br/htmlDemo/semTabela.htm" target="_blank">demonstração</a>), seu chefe/cliente/carrasco/vilão dos seus pesadelos fica feliz e você fica mais feliz pois fez um trabalho de uma maneira mais correta e com mais qualidade.</p>
<p>Quem quiser os códigos para poder ver melhor analisar e mexer, clique <a href="http://www.renie.com.br/htmlDemo/tableToDiv.zip">aqui</a> .<br />
É isso aí galera, vou postar mais algumas coisas na seqüência sobre como trabalhar bem com &lt;div&gt; e como solucionar alguns probleminhas típicos, e lembre-se sempre. Testem sempre suas aplicações pelo menos no Internet Explorer( 7 e 8), e Mozilla Firefox 3+, não digo para testarem no IE6 pois sigo a seguinte filosofia:</p>
<blockquote><p>Se nem a Microsoft, pai dessa merda, dá suporte ao Internet Explorer 6, porque EU deveria fazê-lo? <img src='http://renie.com.br/site/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://renie.com.br/site/2009/12/27/tableless-uma-iniciacao/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
