<?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/"
	>

<channel>
	<title>Leandro Vieira Pinho´s Blog &#187; crossbrowser</title>
	<atom:link href="http://leandrovieira.com/archive/tag/crossbrowser/feed" rel="self" type="application/rss+xml" />
	<link>http://leandrovieira.com</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Sat, 20 Aug 2011 19:22:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Vamos matar o Internet Explorer 6, por favor.</title>
		<link>http://leandrovieira.com/archive/vamos-matar-o-internet-explorer-6-por-favor</link>
		<comments>http://leandrovieira.com/archive/vamos-matar-o-internet-explorer-6-por-favor#comments</comments>
		<pubDate>Fri, 09 Jan 2009 12:31:46 +0000</pubDate>
		<dc:creator>Leandro Vieira</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[campanha]]></category>
		<category><![CDATA[crossbrowser]]></category>
		<category><![CDATA[IE]]></category>
		<category><![CDATA[ie6]]></category>
		<category><![CDATA[iMasters]]></category>
		<category><![CDATA[meme]]></category>

		<guid isPermaLink="false">http://leandrovieira.com/?p=187</guid>
		<description><![CDATA[Todo bom desenvolvedor constrói suas aplicações com foco numa solução crossbrowser, ou seja, que funcione no máximo de browsers possíveis, se possível em todos. Mas, todos concordam que lidar com o infame do Internet Explorer 6 é uma *****. O &#8230; <a href="http://leandrovieira.com/archive/vamos-matar-o-internet-explorer-6-por-favor">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Todo bom desenvolvedor constrói suas aplicações com foco numa solução crossbrowser, ou seja, que funcione no máximo de browsers possíveis, se possível em todos. Mas, todos concordam que lidar com o infame do Internet Explorer 6 é uma *****.</p>
<p>O <a href="http://www.imasters.com.br/">iMasters</a> brilhantemente lançou uma <a href="http://imasters.uol.com.br/crossbrowser">campanha para eliminar browsers antigos do mercado</a>, entre eles o dito cujo do IE 6. Convido todos desenvolvedores decentes a participarem dessa iniciativa e nos ajudar a matar o Internet Explorer 6, por favor.</p>
<p>Participar da campanha é simples, basta adicionar um pequeno e simples código nos sites de sua responsabilidade que esse código irá detectar o navegador e sua versão. Se detectado que se trata do IE 6, será exibido uma barra convidando o usuário a atualizar seu navegador e ter uma navegação mais segura e nos ajudar, é claro.</p>
<p>Para ajudar na divulgação da campanha e facilitar nosso trabalho hoje e amanhã, inicio agora um Meme onde o objetivo é blogar a respeito da campanha, inserir o código da campanha em seu blog e dizer por que o Internet Explorer 6 deve morrer <img src='http://leandrovieira.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>Convido meus amigos <a href="http://www.metzen.com.br/blog/">Metzen</a>, <a href="http://www.brunodulcetti.com/blog/">Bruno Dulcetti</a>, <a href="http://japs.etc.br/">Japs</a> e <a href="http://www.michelazzo.com.br/">Michelazzo</a> para participarem.</p>
]]></content:encoded>
			<wfw:commentRss>http://leandrovieira.com/archive/vamos-matar-o-internet-explorer-6-por-favor/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Solução para limpar e resgatar o valor default do atributo value de um campo</title>
		<link>http://leandrovieira.com/archive/solucao-para-limpar-e-resgatar-o-valor-default-do-atributo-value-de-um-campo</link>
		<comments>http://leandrovieira.com/archive/solucao-para-limpar-e-resgatar-o-valor-default-do-atributo-value-de-um-campo#comments</comments>
		<pubDate>Thu, 28 Dec 2006 18:31:34 +0000</pubDate>
		<dc:creator>leandro</dc:creator>
				<category><![CDATA[crossbrowser]]></category>
		<category><![CDATA[DOM]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://leandrovieira.com/?p=87</guid>
		<description><![CDATA[Criei uma solução super simples e prática com o intuito de limpar e resgatar o valor default do atributo value de um campo de formulário. Observe o script: /** * manager_field_default_value (0.1) - 28/12/2006 * Leandro Vieira Pinho * Localize-me. &#8230; <a href="http://leandrovieira.com/archive/solucao-para-limpar-e-resgatar-o-valor-default-do-atributo-value-de-um-campo">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Criei uma solução super simples e prática com o intuito de <strong>limpar e resgatar o valor default do atributo value de um campo de formulário</strong>. Observe o script:</p>
<pre lang="javascript">/**
 * manager_field_default_value (0.1) - 28/12/2006
 * Leandro Vieira Pinho
 * Localize-me. Blog: [ http://leandro.w3invent.com.br ], E-mail leandro[at]w3invent[dot]com[dot]br
 */
var manager_field_default_value = {
	objFieldId: 'id_do_campo',
	start: function() {
		objField = this.$(this.objFieldId);
		objField.onclick = function() {
			manager_field_default_value.clearDefaultValue();
		}
		objField.onfocus = function() {
			manager_field_default_value.clearDefaultValue();
		}
		objField.onblur = function() {
			manager_field_default_value.backDefaultValue();
		}
	},
	clearDefaultValue: function() {
		if ( this.$(this.objFieldId).value == this.$(this.objFieldId).defaultValue ) {
			this.$(this.objFieldId).value = '';
		}
	},
	backDefaultValue: function() {
		if ( this.$(this.objFieldId).value == '' ) {
			this.$(this.objFieldId).value = this.$(this.objFieldId).defaultValue;
		}
	},
	$: function(strObjId) {
		return document.getElementById(strObjId);
	}
}</pre>
<p>Para usá-lo, você precisará informar apenas o atributo ID do campo desejado. E essa informação é atribuída na propriedade <strong>objFieldId</strong>. No exemplo acima, coloquei como exemplo: <strong>id_do_campo</strong>. Uma vez configurada tal propriedade, o script saberá com qual campo de formulário ele irá trabalhar.</p>
<p>Feita isso, você precisa apenas chamar o método <strong>start()</strong> após a página ser carregada &#8211; <strong>window.onload</strong>. O método deve ser chamado assim:</p>
<pre lang="javascript">manager_field_default_value.start();</pre>
<p>A lógica do script é a seguinte:</p>
<p>Ao clicar no campo de formulário informado ou quando ele receber um foco. Será verificado se o seu valor é igual ao valor atribuído ao atributo value. Caso sim, será chamado o método <strong>clearDefaultValue</strong> que deixará o campo em branco. Quando o campo perder o foco &#8211; <strong>onblur</strong> &#8211; será verificado se o valor está em branco, se tiver voltamos com o <strong>valor default</strong> do campo <img src='http://leandrovieira.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://leandrovieira.com/archive/solucao-para-limpar-e-resgatar-o-valor-default-do-atributo-value-de-um-campo/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Diferenças entre os browsers ao interpretar JavaScript #1</title>
		<link>http://leandrovieira.com/archive/diferencas-entre-os-browsers-ao-interpretar-javascript-1</link>
		<comments>http://leandrovieira.com/archive/diferencas-entre-os-browsers-ao-interpretar-javascript-1#comments</comments>
		<pubDate>Thu, 21 Dec 2006 13:35:56 +0000</pubDate>
		<dc:creator>leandro</dc:creator>
				<category><![CDATA[crossbrowser]]></category>
		<category><![CDATA[IE]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[opera]]></category>

		<guid isPermaLink="false">http://leandrovieira.com/?p=80</guid>
		<description><![CDATA[Estou lançando uma série que pretendo manter aqui no blog: Diferença entre browsers ao interpretar JavaScript. Ela terá a simples intenção de arquivar algumas diferença que percebo duramente o meu dia-a-dia de desenvolvimento utilizando tal linguagem. Mas, como não quero &#8230; <a href="http://leandrovieira.com/archive/diferencas-entre-os-browsers-ao-interpretar-javascript-1">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Estou lançando uma série que pretendo manter aqui no blog: <strong>Diferença entre browsers ao interpretar JavaScript</strong>. Ela terá a simples intenção de arquivar algumas diferença que percebo duramente o meu dia-a-dia de desenvolvimento utilizando tal linguagem. Mas, como não quero manter isso só pra mim, decidir compartilhar e disponibilizar por aqui <img src='http://leandrovieira.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Vamos ao primeiro exemplo de hoje, o qual me motivou a iniciar esta série. Observe o seguinte código:</p>
<pre lang="javascript">// Seleciona todos os links contidos na página
var arrLinks = $tags('a');
// Loop entre os links selecionados
for ( var i = 0, objLink; objLink = arrLinks[i]; i++) {
	// Selecionamos o atributo rel do link em questão
	var objLinkAttRel = objLink.getAttribute('rel');
	// Descobrimos o tipo da varíavel que armazenou o atributo rel do link
	alert('Tipo: ' + typeof(objLinkAttRel));
}</pre>
<p>Bom, o código está auto-explicativo (se não o compreendeu, comente). Observe o resultado obtido:</p>
<ul>
<li>Tipo: string = <a href="http://microsoft.com/ie/">Internet Explorer</a> 6</li>
<li>Tipo: object = <a href="http://mozilla.com/firefox">Firefox</a> 2.0.0.1</li>
<li>Tipo: object = <a href="http://opera.com">Opera</a> 9</li>
</ul>
<p>Como você percebeu, somente o <a href="http://microsoft.com/ie/">Internet Explorer</a> interpreta o tipo da variável como <strong>Object String</strong>. Então, se você faz um código assim:</p>
<pre lang="javascript">...
var objLinkAttRel = objLink.getAttribute('rel');
if ( objLinkAttRel.substring(0,3) == 'foo' ) {
	// Faz alguma coisa
}</pre>
<p>Com o intuito de verificar o conteúdo do atributo rel dos links selecionados, e testa somente no <a href="http://microsoft.com/ie/">Internet Explorer</a>, você verá seu script funcionando perfeitamente. Mas ao testar em outros navegadores &#8211; como o <a href="http://mozilla.com/firefox">Firefox</a> e o <a href="http://opera.com">Opera</a> &#8211; você terá uma mensagem de erro &#8211; <em>objLinkAttRel has no properties</em>. Isto por que você está utilizando um método &#8211; <a href="http://leandro.w3invent.com.br/archive/a-diferenca-entre-os-metodos-substr-e-substring-do-javascript">substring</a> &#8211; para trabalhar com <strong>Objects Strings</strong>. E como eles não interpretam tal variável como <strong>Object String</strong>, certamente não funcionará.</p>
<p>Então, o que fazer para que tenhamos esse <strong>código de forma crossbrowser</strong>? Simples, ao selecionar o conteúdo do atributo rel dos links, iremos transformá-lo em um <strong>Object String</strong>. Para que todos os browsers o interpretam dessa maneira (como Object String). Observe:</p>
<pre lang="javascript">// Seleciona todos os links contidos na página
var arrLinks = $tags('a');
// Loop entre os links selecionados
for ( var i = 0, objLink; objLink = arrLinks[i]; i++) {
	// Selecionamos o atributo rel do link em questão
	var objLinkAttRel = new String(objLink.getAttribute('rel')); // Observe: new String()
	if ( objLinkAttRel.substring(0,3) == 'foo' ) {
		// Faz alguma coisa
	}
}
}</pre>
<p>Somente. Gosto sempre de trabalhar com vários navegadores abertos e testando tudo ao mesmo tempo, assim já identifico de imediato algumas divergências entre os navegadores e procuro uma alternativa para deixar meus <strong>códigos sempre de forma crossbrowser</strong> <img src='http://leandrovieira.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://leandrovieira.com/archive/diferencas-entre-os-browsers-ao-interpretar-javascript-1/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

