<?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>Desenvolvedor FrontEnd - wbruno</title>
	<atom:link href="http://wbruno.com.br/feed/" rel="self" type="application/rss+xml" />
	<link>http://wbruno.com.br</link>
	<description></description>
	<lastBuildDate>Wed, 22 Feb 2012 23:44:18 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>window.history.pushState javascript &#8211; trocando a URL usando api html5 em páginas carregadas com ajax</title>
		<link>http://wbruno.com.br/2012/02/22/window-history-pushstate-javascript-trocando-url-usando-api-html5-em-paginas-carregadas-ajax/</link>
		<comments>http://wbruno.com.br/2012/02/22/window-history-pushstate-javascript-trocando-url-usando-api-html5-em-paginas-carregadas-ajax/#comments</comments>
		<pubDate>Wed, 22 Feb 2012 23:29:46 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[pushState]]></category>

		<guid isPermaLink="false">http://wbruno.com.br/?p=1792</guid>
		<description><![CDATA[Bem simples, só editei o trecho que era necessário para enviar um history.pushState, no final da requisição ajax, que carrega a página em uma div, sem dar refresh no restante do site. http://wbruno.com.br/2011/05/27/navegacao-sem-refresh-%E2%80%93-carregando-conteudo-ajax-em-div-2 $.ajax({ url: href, success: function( response ){ //forçando o parser var response = $( '&#60;div>'+response+'&#60;/div>' ); var data = response.find('#content').html(); //apenas atrasando ...]]></description>
			<content:encoded><![CDATA[<p>Bem simples, só editei o trecho que era necessário para enviar um <strong>history.pushState</strong>, no final da requisição ajax, que carrega a página em uma div, sem dar refresh no restante do site.</p>
<p><a href="http://wbruno.com.br/2011/05/27/navegacao-sem-refresh-%E2%80%93-carregando-conteudo-ajax-em-div-2/" target="_blank">http://wbruno.com.br/2011/05/27/navegacao-sem-refresh-%E2%80%93-carregando-conteudo-ajax-em-div-2</a></p>
<pre name="code" class="javascript:firstLine[18]">
			$.ajax({
				url: href,
				success: function( response ){
					//forçando o parser
					var response = $( '&lt;div>'+response+'&lt;/div>' );

					var data = response.find('#content').html();

					//apenas atrasando a troca, para mostrarmos o loading
					window.setTimeout( function(){
						content.fadeOut('slow', function(){
							content.html( data ).fadeIn();

							var title = response.find('title').text();
							window.history.pushState( href, title, href );
							document.title = title;
						});
					}, 500 );
				}
			});
</pre>
<p>Notem a linha:</p>
<pre name="code" class="javascript:firstLine[31]">
window.history.pushState( href, response.find('title'), href );</pre>
<p>É essa nova função que veio junto com o HTML5, que faz toda a mágica.<br />
Browsers antigos não implementam esse método.</p>
<p>Agora podemos parar de forçar a barra usando o document.location.hash, como nessa implementação aqui:<br />
<a href="http://wbruno.com.br/2011/11/25/carregando-conteudo-ajax-trocando-url-jquery/" target="_blank">http://wbruno.com.br/2011/11/25/carregando-conteudo-ajax-trocando-url-jquery/</a></p>
<h2><a href="http://wbruno.com.br/scripts/fotos2.html" target="_blank">Demonstração</a></h2>
<p>É isso. Dúvidas ? pergunte, comente!</p>
]]></content:encoded>
			<wfw:commentRss>http://wbruno.com.br/2012/02/22/window-history-pushstate-javascript-trocando-url-usando-api-html5-em-paginas-carregadas-ajax/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flash chamando função javascript, e javascript chamando função do flash &#8211; ExternalInterface</title>
		<link>http://wbruno.com.br/2012/02/22/flash-chamando-funcao-javascript-javascript-chamando-funcao-flash-externalinterface/</link>
		<comments>http://wbruno.com.br/2012/02/22/flash-chamando-funcao-javascript-javascript-chamando-funcao-flash-externalinterface/#comments</comments>
		<pubDate>Wed, 22 Feb 2012 15:37:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[action script]]></category>
		<category><![CDATA[as]]></category>
		<category><![CDATA[externalinterface]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[swf]]></category>

		<guid isPermaLink="false">http://wbruno.com.br/?p=1788</guid>
		<description><![CDATA[Boas galera! Precisei disso recentemente, e como não trabalho muito com flash, e nunca programei nada de verdade em ActionScript, pedi socorro ao mestre do flash: Thiago Cruz. No blog dele, ele já postou ótimos exemplos, de utilizar a class externalinterface, então deixo por aqui também, o exemplo do código fonte que ele fez para ...]]></description>
			<content:encoded><![CDATA[<p>Boas galera!</p>
<p>Precisei disso recentemente, e como não trabalho muito com flash, e nunca programei nada de verdade em ActionScript, pedi socorro ao mestre do flash: <strong>Thiago Cruz</strong>.</p>
<p>No blog dele, ele já postou ótimos exemplos, de <a href="http://berseck.wordpress.com/2009/03/25/utilizando-classe-externalinterface-as2/" target="_blank" title="Utilizando classe externalInterface() AS2">utilizar a class externalinterface</a>, então deixo por aqui também, o exemplo do código fonte que ele fez para mim.<br />
<span id="more-1788"></span><br />
O <strong>javascript</strong> fica assim:</p>
<pre name="code" class="javascript">
function onFlashReady() {
    sendToAS("another test message");
}

function callJS(value) {
    onFlashReady();
    return "Hi Flash.";
}

function thisMovie(movieName) {
    if (navigator.appName.indexOf("Microsoft") != -1) {
        return window[movieName];
    } else {
        return document[movieName];
    }
}

function sendToAS(value) {
    thisMovie("externalclass").callAS(value);
}
</pre>
<p>e o <strong>action script</strong>:</p>
<pre name="code" class="javascript">
import flash.external.*;

play();

System.security.allowDomain("*");

ExternalInterface.addCallback("callAS", this, func);
ExternalInterface.call("callJS", 1);

function func(n:Number) {
    gotoAndStop(n);
}
</pre>
<h2><a href="http://wbruno.com.br/scripts/externalclass.zip" target="_blank">Download ExternalClass.zip</a></h2>
<p>Vlw pela ajuda Thiago!!</p>
]]></content:encoded>
			<wfw:commentRss>http://wbruno.com.br/2012/02/22/flash-chamando-funcao-javascript-javascript-chamando-funcao-flash-externalinterface/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Adicionando widget de Últimos Posts com data no WordPress</title>
		<link>http://wbruno.com.br/2012/02/14/adicionando-widget-de-ultimos-posts-data-wordpress/</link>
		<comments>http://wbruno.com.br/2012/02/14/adicionando-widget-de-ultimos-posts-data-wordpress/#comments</comments>
		<pubDate>Tue, 14 Feb 2012 23:02:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://wbruno.com.br/?p=1782</guid>
		<description><![CDATA[Registrando um widget do WordPress, para listar ultimos posts, com data. O widget padrão, não tem essa opção, então criei um novo bem simples. function ultimos_posts_display() { // print some HTML for the widget to display here echo '&#60;div class="sidebar-box ultimos-posts">&#60;strong>&#218;ltimos posts&#60;/strong> &#60;ul>'; $recent_posts = wp_get_recent_posts(); foreach( $recent_posts as $recent ){ echo '&#60;li>&#60;span>'.preg_replace( '/([0-9]{4})-([0-9]{2})-([0-9]{2})([\s0-9:]+)?/', '$3-$2-$1', ...]]></description>
			<content:encoded><![CDATA[<p>Registrando um widget do WordPress, para listar ultimos posts, com data.<br />
O widget padrão, não tem essa opção, então criei um novo bem simples.</p>
<p><span id="more-1782"></span></p>
<pre name="code" class="php">function ultimos_posts_display() {
	// print some HTML for the widget to display here
	echo '&lt;div class="sidebar-box ultimos-posts">&lt;strong>&Uacute;ltimos posts&lt;/strong>
	&lt;ul>';

	$recent_posts = wp_get_recent_posts();
	foreach( $recent_posts as $recent ){
		echo '&lt;li>&lt;span>'.preg_replace( '/([0-9]{4})-([0-9]{2})-([0-9]{2})([\s0-9:]+)?/', '$3-$2-$1', $recent['post_date'] ).'&lt;/span>
		&lt;a href="' . get_permalink($recent["ID"]) . '" title="Look '.$recent["post_title"].'" >' .   $recent["post_title"].'&lt;/a>&lt;/li> ';
	}

	echo '&lt;/ul>&lt;/div>';
}

wp_register_sidebar_widget(
	'ultimos_posts_1',        // your unique widget id
	'Ultimos posts',          // widget name
	'ultimos_posts_display',  // callback function
	array(                  // options
		'description' => 'Widget dos ultimos posts com data'
	)
);</pre>
]]></content:encoded>
			<wfw:commentRss>http://wbruno.com.br/2012/02/14/adicionando-widget-de-ultimos-posts-data-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Album de fotos com javascript &#8211; simples aplicação de esconde mostra</title>
		<link>http://wbruno.com.br/2012/02/02/album-de-fotos-javascript-simples-aplicacao-de-esconde-mostra/</link>
		<comments>http://wbruno.com.br/2012/02/02/album-de-fotos-javascript-simples-aplicacao-de-esconde-mostra/#comments</comments>
		<pubDate>Thu, 02 Feb 2012 19:50:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[HTML]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[album]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://wbruno.com.br/blog/?p=1767</guid>
		<description><![CDATA[Boas!! apenas para deixar registrado mesmo.. Album de fotos, baseado em um escode/mostra, com a propriedade display. Fiz em javascript puro, em poucos minutos. Foi mais dificil achar as imagens, e mais trabalhoso redimensionar elas, do que fazer o código js.. hehe Enfim, online: Demonstração script usado: &#60;script type="text/javascript"> function id( el ){ return document.getElementById( ...]]></description>
			<content:encoded><![CDATA[<p>Boas!!<br />
apenas para deixar registrado mesmo..<br />
<span id="more-1767"></span></p>
<p>Album de fotos, baseado em um escode/mostra, com a propriedade display.<br />
Fiz em javascript puro, em poucos minutos. Foi mais dificil achar as imagens, e mais trabalhoso redimensionar elas, do que fazer o código js.. hehe</p>
<p>Enfim, online:</p>
<h2><a href="http://wbruno.com.br/scripts/album-disney.html" target="_blank">Demonstração</a></h2>
<p>script usado:</p>
<pre name="code" class="javascript">
&lt;script type="text/javascript">
function id( el ){
	return document.getElementById( el );
}
function hide_all(){
	var els = id('content').getElementsByTagName('ul');

	for( var i=0; i&lt;els.length; i++ )
	{
		els[i].style.display = 'none';
	}
}
/* http://www.javascriptkit.com/jsref/event.shtml */
function disablelink( e ){
	var evt = window.event || e
	if (evt.preventDefault) //supports preventDefault?
		evt.preventDefault()
	else //IE browser
		return false
}
function palco( src ){
	id('palco').innerHTML = '&lt;img src="'+src+'" alt="" />';
}
window.onload = function(){
	hide_all();
	var as = id('lista').getElementsByTagName('a');
	for( var i=0; i&lt;as.length; i++ )
	{
		as[i].onclick = function( e ){
			hide_all();
			var id_el = this.href.split('#')

			id( id_el[1] ).style.display = 'block';
			return disablelink( e );
		}
	}
	var as = id('content').getElementsByTagName('a');
	for( var i=0; i&lt;as.length; i++ )
	{
		as[i].onclick = function( e ){
			palco( this.href )
			return disablelink( e );
		}
	}
}
&lt;/script>
</pre>
]]></content:encoded>
			<wfw:commentRss>http://wbruno.com.br/2012/02/02/album-de-fotos-javascript-simples-aplicacao-de-esconde-mostra/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Reescrevendo uma função nativa do javascript &#8211; apenas para não esquecermos que é possível.</title>
		<link>http://wbruno.com.br/2012/02/01/reescrevendo-uma-funcao-nativa-javascript-apenas-para-nao-esquecermos-e-possivel/</link>
		<comments>http://wbruno.com.br/2012/02/01/reescrevendo-uma-funcao-nativa-javascript-apenas-para-nao-esquecermos-e-possivel/#comments</comments>
		<pubDate>Wed, 01 Feb 2012 21:21:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://wbruno.com.br/blog/?p=1765</guid>
		<description><![CDATA[&#60;script type="text/javascript"> var _write = document.write; document.write('1');//vai funcionar normal document.write = function(){ //não faz nada } document.write('2');//não vai funcionar document.write('2');//não vai funcionar document.write('2');//não vai funcionar document.write('2');//não vai funcionar document.write('2');//não vai funcionar document.write = _write; document.write('3');//voltou a funcionar &#60;/script>]]></description>
			<content:encoded><![CDATA[<pre name="code" class="javascript">
&lt;script type="text/javascript">
var _write = document.write;
document.write('1');//vai funcionar normal

document.write = function(){
        //não faz nada
}
document.write('2');//não vai funcionar
document.write('2');//não vai funcionar
document.write('2');//não vai funcionar
document.write('2');//não vai funcionar
document.write('2');//não vai funcionar

document.write = _write;
document.write('3');//voltou a funcionar
&lt;/script>
</pre>
]]></content:encoded>
			<wfw:commentRss>http://wbruno.com.br/2012/02/01/reescrevendo-uma-funcao-nativa-javascript-apenas-para-nao-esquecermos-e-possivel/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Princípio de carousel de imagens com jQuery &#8211; Criando um plugin simples</title>
		<link>http://wbruno.com.br/2012/01/26/principio-de-carousel-de-imagens-jquery-criando-um-plugin-simples/</link>
		<comments>http://wbruno.com.br/2012/01/26/principio-de-carousel-de-imagens-jquery-criando-um-plugin-simples/#comments</comments>
		<pubDate>Thu, 26 Jan 2012 09:00:06 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Opinião]]></category>
		<category><![CDATA[carousel]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[Plugin]]></category>

		<guid isPermaLink="false">http://wbruno.com.br/blog/?p=1748</guid>
		<description><![CDATA[Nos últimos meses, tenho usado bastante o efeito de carousel. Como todo programador, me incomodo de ter que &#8216;me repetir&#8217;. Ou ter que repensar uma lógica que já resolvi uma vez. Nem sempre &#8216;temos tempo&#8217; de parar, analisar e otimizar oque estamos fazendo. Porém, devemos fazer isso. Fiz vários tipos de carouseis, porém por serem ...]]></description>
			<content:encoded><![CDATA[<p>Nos últimos meses, tenho usado bastante o efeito de carousel.<br />
Como todo programador, me incomodo de ter que &#8216;me repetir&#8217;. Ou ter que repensar uma lógica que já resolvi uma vez.</p>
<p>Nem sempre &#8216;temos tempo&#8217; de parar, analisar e otimizar oque estamos fazendo.<br />
Porém, <strong>devemos</strong> fazer isso.<br />
<span id="more-1748"></span><br />
Fiz vários tipos de carouseis, porém por serem diferentes um dos outros, e alguns possuirem algumas peculiaridades, configurações extras, estilizações fora dos padrões, acabei fazendo os meus próprios códigos, e não usando nenhum plugin pronto.</p>
<p>Nesse post, vou deixar o start de um plugin de jQuery, que rapidamente fiz aqui.<br />
Muitas melhorias precisam ser feitas, como:<br />
-> possibilitar scroll vertical<br />
-> não limitar a marcação a ser usada<br />
-> permitir uso do easing..</p>
<p>e por ai vai.. nisso, eu acabaria recriando o cycle(ou chegando perto do efeito Hz dele). Não é essa a intenção.<br />
Até agora é para ser simples mesmo, e muito mais simples de usar também.</p>
<p>Como todos os meus efeitos, esse não foge do meu padrão: resolvi as partes mais complicadas no css.<br />
O js é simples. O instanciamento ainda mais.</p>
<p>É isso, sem mais, segue o código, e logo abaixo a demonstração.<br />
A grande &#8216;sacada&#8217;, é deixar o plugin se virar com a animação, (setas prev e next), e termos uma chamada simples e limpa assim:</p>
<pre name="code" class="javascript:firstLine[48]">
/* fim plugin carousel */
jQuery(document).ready(function(){
	jQuery('#slide').carousel();
	jQuery('#slide2').carousel();
});
</pre>
<h2><a href="http://wbruno.com.br/scripts/simple_carousel.html" target="_blank">Demonstração</a></h2>
<p>=) Vejam como fiz:</p>
<pre name="code" class="html">
&lt;html>
&lt;head>
&lt;script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js">&lt;/script>
&lt;script type="text/javascript">
/* carousel */
jQuery.fn.carousel = function( settings ){
	var $this = jQuery( this );
	var defaults = {
		prev: '.nav-left',
		next: '.nav-right',
		pos: 0,
		speed: 1000
	}
	settings = jQuery.extend(defaults, settings); 

	var lis = $this.find('li');
	var width_li = lis.eq(0).width()+ parseInt( lis.eq(0).css('marginLeft') )+parseInt( lis.eq(0).css('marginRight') );
	var ul = $this.find('ul');

	var prev = $this.find( settings.prev );
	var next = $this.find( settings.next );

	ul.css({width: (width_li*lis.length)+'px'});

	/* .nav-left */
	prev.click(function(){
		if( settings.pos>0 ){
			settings.pos--;
			_move( ul, settings.pos, width_li, settings.speed );
		}
	});
	/* .nav-right */
	next.click(function(){
		if( lis.length-1>settings.pos ){
			settings.pos++;
			_move( ul, settings.pos, width_li, settings.speed );
		}
	});

	/* funcoes privadas */
	_move = function( ul, pos, width_li, speed ){
		var new_left =  -1*pos*width_li;
		ul.animate({left:new_left+'px'},settings.speed);
	}

	return $this;
};
/* fim plugin carousel */
jQuery(document).ready(function(){
	jQuery('#slide').carousel();
	jQuery('#slide2').carousel();
});
&lt;/script>
&lt;style type="text/css">
* { margin: 0; padding: 0; }
#slide { width: 460px; height: 300px; }
	#slide li { width: 460px; height: 300px; }
#slide2 { width: 140px; height: 105px; padding: 10px 25px; background: #000; }
	#slide2 li { width: 140px; height: 105px; }
hr { margin: 50px; }

/* css do plugin */
.carousel { position: relative; }
.overflow { overflow: hidden; height: 100%; position: relative; }
.carousel ul { position: absolute; top: 0; left: 0; }
.carousel li { float: left; }
.nav { position: absolute; top: 50%; z-index: 3;
	background: url('images/nav.png') no-repeat;
	width: 36px; height: 36px; margin-top: -18px;
	cursor: pointer;
}
.nav-left { left: 10px; }
.nav-right { right: 10px; background-position: right top; }
	.nav-left:hover { background-position: left -36px; }
	.nav-right:hover { background-position: right -36px; }
/* css do plugin */
&lt;/style>
&lt;/head>
&lt;body>

	&lt;div id="slide" class="carousel">
		&lt;div class="nav nav-left">&lt;/div>
		&lt;div class="overflow">
			&lt;ul>
				&lt;li>&lt;img src="images/1.jpg" alt="" />&lt;/li>
				&lt;li>&lt;img src="images/2.jpg" alt="" />&lt;/li>
				&lt;li>&lt;img src="images/3.jpg" alt="" />&lt;/li>
				&lt;li>&lt;img src="images/4.jpg" alt="" />&lt;/li>
				&lt;li>&lt;img src="images/5.jpg" alt="" />&lt;/li>
			&lt;/ul>
		&lt;/div>
		&lt;div class="nav nav-right">&lt;/div>
	&lt;/div>&lt;!-- /slide -->

	&lt;hr />

	&lt;div id="slide2" class="carousel">
		&lt;div class="nav nav-left">&lt;/div>
		&lt;div class="overflow">
			&lt;ul>
				&lt;li>&lt;img src="images/mini1.jpg" alt="" />&lt;/li>
				&lt;li>&lt;img src="images/mini2.jpg" alt="" />&lt;/li>
				&lt;li>&lt;img src="images/mini3.jpg" alt="" />&lt;/li>
				&lt;li>&lt;img src="images/mini4.jpg" alt="" />&lt;/li>
			&lt;/ul>
		&lt;/div>
		&lt;div class="nav nav-right">&lt;/div>
	&lt;/div>&lt;!-- /slide -->
&lt;/body>
&lt;/html>
</pre>
]]></content:encoded>
			<wfw:commentRss>http://wbruno.com.br/2012/01/26/principio-de-carousel-de-imagens-jquery-criando-um-plugin-simples/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Alterar dimensões de embed do youtube com javascript</title>
		<link>http://wbruno.com.br/2012/01/25/alterar-dimensoes-de-embed-youtube-javascript/</link>
		<comments>http://wbruno.com.br/2012/01/25/alterar-dimensoes-de-embed-youtube-javascript/#comments</comments>
		<pubDate>Wed, 25 Jan 2012 15:23:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[HTML]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[embed]]></category>
		<category><![CDATA[iframe]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[youtube]]></category>

		<guid isPermaLink="false">http://wbruno.com.br/blog/?p=1760</guid>
		<description><![CDATA[Repositório, para deixar arquivado aqui. Veja que ao clicar em cada botão, o tamanho do vídeo se altera. &#60;html> &#60;head> &#60;style type="text/css"> * { margin: 0; padding: 0; } html, body { height: 100%; } &#60;/style> &#60;script type="text/javascript"> function sizeIframe( w, h ) { document.getElementById('yt').width = w; document.getElementById('yt').height = h; } window.onload = function(){ sizeIframe( ...]]></description>
			<content:encoded><![CDATA[<p>Repositório, para deixar arquivado aqui.<br />
Veja que ao clicar em cada botão, o tamanho do vídeo se altera.</p>
<pre name="code" class="html">
&lt;html>
&lt;head>
&lt;style type="text/css">
* { margin: 0; padding: 0; }
html, body { height: 100%; }
&lt;/style>
&lt;script type="text/javascript">
function sizeIframe( w, h )
{
	document.getElementById('yt').width = w;
	document.getElementById('yt').height = h;
}
window.onload = function(){
	sizeIframe( document.body.offsetWidth, document.body.offsetHeight-30 );
}
&lt;/script>
&lt;/head>
&lt;body>
	&lt;iframe width="420" height="315" src="http://www.youtube.com/embed/tvaPMNq4Ey0" frameborder="0" allowfullscreen id="yt">&lt;/iframe>

	&lt;input type="button" name="mudar" value="600x480" onclick="sizeIframe( 600, 480 )" />
	&lt;input type="button" name="mudar" value="600x480" onclick="sizeIframe( 420, 315 )" />
	&lt;input type="button" name="mudar" value="300x240" onclick="sizeIframe( 300, 240 )" />
&lt;/body>
&lt;/html>
</pre>
<p>É isso. Me diga se vc usar.</p>
]]></content:encoded>
			<wfw:commentRss>http://wbruno.com.br/2012/01/25/alterar-dimensoes-de-embed-youtube-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Exibir restante de conteúdo, que já estava sendo mostrado pela &#8220;metade&#8221;- jQuery exibe-esconde</title>
		<link>http://wbruno.com.br/2012/01/25/exibir-restante-de-conteudo-ja-estava-sendo-mostrado-pela-metade-jquery-exibe-esconde/</link>
		<comments>http://wbruno.com.br/2012/01/25/exibir-restante-de-conteudo-ja-estava-sendo-mostrado-pela-metade-jquery-exibe-esconde/#comments</comments>
		<pubDate>Wed, 25 Jan 2012 09:00:07 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[esconde mostra]]></category>
		<category><![CDATA[js]]></category>

		<guid isPermaLink="false">http://wbruno.com.br/blog/?p=1754</guid>
		<description><![CDATA[Boas, A idéia aqui, foi chegar próximo do efeito de &#8220;Exibir mais&#8221; do youtube: Escondido: A mostra: Ok ? Uma parte do conteúdo fica a mostra, e clicando no botão aparece o restante. O primeiro passo é resolver o efeito no css. Todos os efeitos são apenas css. O javascript manipulando css. jQuery só entra ...]]></description>
			<content:encoded><![CDATA[<p>Boas,</p>
<p>A idéia aqui, foi chegar próximo do efeito de &#8220;Exibir mais&#8221; do youtube:<br />
Escondido:<br />
<a href="http://wbruno.com.br/blog/wp-content/uploads/2012/01/more.png"><img src="http://wbruno.com.br/blog/wp-content/uploads/2012/01/more-300x103.png" alt="" title="more" width="300" height="103" class="aligncenter size-medium wp-image-1755" /></a></p>
<p>A mostra:<br />
<a href="http://wbruno.com.br/blog/wp-content/uploads/2012/01/less.png"><img src="http://wbruno.com.br/blog/wp-content/uploads/2012/01/less-300x135.png" alt="" title="less" width="300" height="135" class="aligncenter size-medium wp-image-1756" /></a></p>
<p>Ok ?<br />
Uma parte do conteúdo fica a mostra, e clicando no botão aparece o restante.</p>
<p>O primeiro passo é resolver o efeito no <strong>css</strong>. Todos os efeitos são apenas css. O javascript manipulando css. jQuery só entra para facilitar essa manipulação, porém é importante ressaltar, que toda a lógica e o efeito em si, ficou no css.</p>
<p>Depois de conseguir resolver tanto o estado aberto, qnto o fechado, usando apenas css e html, sem nenhuma linha de js, fazer o comportamento fica super simples.</p>
<pre name="code" class="html">
&lt;html>
&lt;head>
&lt;style type="text/css">
* { margin: 0; padding: 0; }
p { margin-bottom: 10px; }
.content { margin: 0 auto; width: 500px; }
#panel { position: relative; width: 500px; margin: 0 auto; }
#content { }
.hidden { height: 100px; overflow: hidden; }
#toggle { width: 488px; height: 20px; padding: 5px;
	background: #fff; border: 1px solid #ccc; cursor: pointer;
	text-align: center;
}
&lt;/style>
&lt;script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js">&lt;/script>
&lt;script type="text/javascript">
jQuery(document).ready(function(){
	jQuery('#toggle').click(function(){
		jQuery('#panel').toggleClass('hidden');
	});
});
&lt;/script>
&lt;/head>
&lt;body>
	&lt;div id="panel" class="hidden content">
		&lt;div id="content">
			&lt;p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec sed gravida dolor. Fusce aliquam, urna sit amet
            luctus adipiscing, massa sem venenatis dui, quis accumsan mi orci eu orci. Mauris nec massa non mi iaculis tincidunt
            eget a lectus. Curabitur suscipit, magna vel laoreet volutpat, sem mauris placerat risus, nec pretium mauris orci non dui.&lt;/p>

			&lt;p>Cras in massa dapibus leo tincidunt molestie nec ut sem. Aenean sit amet ipsum risus. Class aptent taciti sociosqu
            ad litora torquent per conubia nostra, per inceptos himenaeos. Cras vitae erat at magna volutpat consequat ut a justo.
            Mauris dapibus dolor at orci placerat congue. Praesent facilisis sodales molestie. Quisque eget lacus eget justo aliquet
             sagittis. Duis sed elit id dui semper feugiat. Vivamus risus magna, facilisis at hendrerit sit amet, accumsan nec felis.&lt;/p>

			&lt;p>Nunc massa tellus, fringilla ut tincidunt consequat, ultricies eget nunc. &lt;/p>
         &lt;/div>&lt;!-- /content -->
	&lt;/div>&lt;!-- /panel -->
	&lt;div id="toggle" class="content">toggle&lt;/div>
&lt;/body>
&lt;/html>
</pre>
<h2><a href="http://wbruno.com.br/scripts/mostra_metade.html">Demonstração</a></h2>
]]></content:encoded>
			<wfw:commentRss>http://wbruno.com.br/2012/01/25/exibir-restante-de-conteudo-ja-estava-sendo-mostrado-pela-metade-jquery-exibe-esconde/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sobre o livro &#8220;Design Emocional&#8221;</title>
		<link>http://wbruno.com.br/2012/01/24/sobre-livro-design-emocional/</link>
		<comments>http://wbruno.com.br/2012/01/24/sobre-livro-design-emocional/#comments</comments>
		<pubDate>Tue, 24 Jan 2012 09:00:16 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Livro]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[donald norman]]></category>
		<category><![CDATA[livro]]></category>

		<guid isPermaLink="false">http://wbruno.com.br/blog/?p=1694</guid>
		<description><![CDATA[Bom, eu já tinha lido O Design do Dia a Dia, e quase sem querer acabei tendo em mãos pedindo uma indicação sobre oque ler, o &#8220;próximo&#8221; livro do Donald A. Norman. Muito bom esse livro também. Podemos lê-lo como um complemento do outro. Uma decisão tem que dar a sensacão de que é boa. ...]]></description>
			<content:encoded><![CDATA[<p>Bom, eu já tinha lido <a href="http://wbruno.com.br/blog/2011/07/25/sobre-livro-o-design-dia-a-dia/" target="_blank">O Design do Dia a Dia</a>, e quase sem querer acabei tendo em mãos pedindo uma indicação sobre oque ler, o &#8220;próximo&#8221; livro do Donald A. Norman.</p>
<p>Muito bom esse livro também. Podemos lê-lo como um complemento do outro.</p>
<p><a href="http://wbruno.com.br/blog/wp-content/uploads/2012/01/21414899_4.jpg"><img src="http://wbruno.com.br/blog/wp-content/uploads/2012/01/21414899_4-300x300.jpg" alt="" title="21414899_4" width="300" height="300" class="alignleft size-medium wp-image-1695" /></a> Uma decisão tem que dar a sensacão de que é boa.<br />
O pensamento vai sendo construido ao longo do livro.<br />
Emoções norteiam as nossas escolhas. Primeiro inconscientemente, e muito depois de forma lógica, decidimos oque queremos, e oque vamos fazer.</p>
<p>Olhar o Design das coisas sob essa perspectiva, te faz refletir, como que algo além de ser bonito, usável, tb pode ser agradável.<br />
Ou então como temos coisas que nos agradam, nos fazem sentir bem, mas não as usamos.</p>
<p>Realmente um mundo se abre, qndo vc nota que por mais que algo seja prático, não usamos se for feio, se não nos fizer sentir bem. E se algo for realmente bonito, e nos transmitir boas sensações, usaremos, apesar dos defeitos.</p>
<p>Norman nos apresenta nesse livro, 3 tipos de Design: Viceral, Comportamental e Reflexivo.<br />
Vale muito a pena. Eu indico.</p>
]]></content:encoded>
			<wfw:commentRss>http://wbruno.com.br/2012/01/24/sobre-livro-design-emocional/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Exemplo de uso jQuery.Deferred &#8211; simples</title>
		<link>http://wbruno.com.br/2012/01/23/exemplo-de-uso-jquery-deferred-simples/</link>
		<comments>http://wbruno.com.br/2012/01/23/exemplo-de-uso-jquery-deferred-simples/#comments</comments>
		<pubDate>Mon, 23 Jan 2012 09:00:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[deferred]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://wbruno.com.br/blog/?p=1739</guid>
		<description><![CDATA[Talvez esteja faltando algo &#8220;simples&#8221;, situações &#8220;cotidianas&#8221;, ou sei lá oque. Estou vendo muitas pessoas no fórum com a mesma dúvida: &#8220;usar o objeto Deferred do jQuery&#8221;, &#8220;pegar o retorno de uma requisição ajax&#8221;, e coisas relacionadas. Eu sempre indico o ótimo tutorial do Maujor: http://www.maujor.com/blog/2011/02/01/o-objeto-deferred-da-jquery-1-5, porém talvez por ser tão completo, e ter tantas ...]]></description>
			<content:encoded><![CDATA[<p>Talvez esteja faltando algo &#8220;simples&#8221;, situações &#8220;cotidianas&#8221;, ou sei lá oque.<br />
<span id="more-1739"></span><br />
Estou vendo muitas pessoas no fórum com a mesma dúvida: &#8220;usar o objeto Deferred do jQuery&#8221;, &#8220;pegar o retorno de uma requisição ajax&#8221;, e coisas relacionadas.</p>
<p>Eu sempre indico o ótimo tutorial do Maujor:<br />
<a href="http://www.maujor.com/blog/2011/02/01/o-objeto-deferred-da-jquery-1-5" title="O Objeto Deferred da jQuery 1.5">http://www.maujor.com/blog/2011/02/01/o-objeto-deferred-da-jquery-1-5</a>, porém talvez por ser tão completo, e ter tantas informações, alguns iniciantes podem não estar &#8220;entendendo&#8221;.</p>
<p>Vou deixar alguns exemplos práticos(todos com o mesmo resultado), de algumas formas de usar o Deferred:</p>
<pre name="code" class="html">
&lt;html>
&lt;head>
	&lt;script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js">&lt;/script>
	&lt;script type="text/javascript">
	jQuery(document).ready(function(){
		/* retorna undefined */
		jQuery('#ajax_form_undefined').submit(function(){
			var form = jQuery( this );
			var ret = envia_form_nao_funciona( form );
			alert( ret );
			return false;
		});

		/* enviando ajax_form com done */
		jQuery('#ajax_form').submit(function(){

			var ret = envia_form( jQuery( this ) );
			ret.done(function( dados ){
				alert( dados );
			});

			return false;
		});

		/* enviando ajax_form2 com then */
		jQuery('#ajax_form2').submit(function(){

			var ret = envia_form( jQuery( this ) );
			ret.then(function( dados ){
				alert( dados );
			});

			return false;
		});

		/* enviando ajax_form3 com success */
		jQuery('#ajax_form3').submit(function(){

			var ret = envia_form( jQuery( this ) );
			ret.success(function( dados ){
				alert( dados );
			});

			return false;
		});
	});
	function envia_form_nao_funciona( form )
	{
		jQuery.ajax({
			type: form.attr('method'),
			url: form.attr('action'),
			data: form.serialize(),
			success: function( dados ){
				return dados
			}
		});
	}
	function envia_form( form )
	{
		return jQuery.ajax({
			type: form.attr('method'),
			url: form.attr('action'),
			data: form.serialize()
		});
	}
	&lt;/script>
&lt;/head>
&lt;body>
	&lt;h2>Exemplo do que "não funciona"(retorna undefined)&lt;/h2>
	&lt;form method="post" action="processa.php" id="ajax_form_undefined">
		&lt;label>&lt;input type="hidden" name="id" value="" />&lt;/label>
		&lt;label>Nome: &lt;input type="text" name="nome" value="nome1" />&lt;/label>
		&lt;label>Email: &lt;input type="text" name="email" value="email1" />&lt;/label>

		&lt;label>&lt;input type="submit" name="enviar" value="Enviar" />&lt;/label>
	&lt;/form>

	&lt;h2>Recebendo com done&lt;/h2>
	&lt;form method="post" action="processa.php" id="ajax_form">
		&lt;label>&lt;input type="hidden" name="id" value="" />&lt;/label>
		&lt;label>Nome: &lt;input type="text" name="nome" value="nome2" />&lt;/label>
		&lt;label>Email: &lt;input type="text" name="email" value="email2" />&lt;/label>

		&lt;label>&lt;input type="submit" name="enviar" value="Enviar" />&lt;/label>
	&lt;/form>

	&lt;h2>Recebendo com then&lt;/h2>
	&lt;form method="post" action="processa.php" id="ajax_form2">
		&lt;label>&lt;input type="hidden" name="id" value="" />&lt;/label>
		&lt;label>Nome: &lt;input type="text" name="nome" value="nome3" />&lt;/label>
		&lt;label>Email: &lt;input type="text" name="email" value="email3" />&lt;/label>

		&lt;label>&lt;input type="submit" name="enviar" value="Enviar" />&lt;/label>
	&lt;/form>

	&lt;h2>Recebendo com success&lt;/h2>
	&lt;form method="post" action="processa.php" id="ajax_form3">
		&lt;label>&lt;input type="hidden" name="id" value="" />&lt;/label>
		&lt;label>Nome: &lt;input type="text" name="nome" value="nome4" />&lt;/label>
		&lt;label>Email: &lt;input type="text" name="email" value="email4" />&lt;/label>

		&lt;label>&lt;input type="submit" name="enviar" value="Enviar" />&lt;/label>
	&lt;/form>
&lt;/body>
&lt;/html>
</pre>
<h2><a href="http://wbruno.com.br/scripts/ajax_form_deferred.html" target="_blank">Demonstração online</a></h2>
<p>Convém lembrar que &#8220;precisamos&#8221; do deferred por causa do <strong>assincronismo</strong> das requisições, ou seja, o objeto ajax, envia para o servidor, o servidor processa, e o objeto ajax trás o retorno, sem refresh, porém também, sem que o restante do script aguarde esse retorno.</p>
<p>É essa diferença entre &#8220;sincrono&#8221; e &#8220;assincrono&#8221;. Note que enviando em modo sincrono <strong>async: false,</strong>, eu consigo &#8220;pegar o retorno&#8221; do ajax.</p>
<pre name="code" class="javascript">
	jQuery(document).ready(function(){
		/* retorna undefined */
		jQuery('#ajax_form_sincrono').submit(function(){
			var form = jQuery( this );
			var ret = envia_form_sincrono( form );
			alert( ret );
			return false;
		});

	});
	function envia_form_sincrono( form )
	{
		var ret = '';
		jQuery.ajax({
			type: form.attr('method'),
			url: form.attr('action'),
			data: form.serialize(),
			async: false,
			success: function( dados ){
				ret = dados;
			}
		});
		return ret;
	}
</pre>
<p>E ai ? qual dos dois usar ? sincrono ? ou assincrono com o deffered ?<br />
Não sei, isso depende da sua aplicação, e é assunto para um próximo post talvez.</p>
<p>Usou ? comente.. este é o &#8220;meu pagamento&#8221; pelo que escrevo: o teu comentário.</p>
]]></content:encoded>
			<wfw:commentRss>http://wbruno.com.br/2012/01/23/exemplo-de-uso-jquery-deferred-simples/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Enviar formulário para o php sem refresh &#8211; jQuery.ajax</title>
		<link>http://wbruno.com.br/2012/01/20/enviar-formulario-para-php-sem-refresh-jquery-ajax/</link>
		<comments>http://wbruno.com.br/2012/01/20/enviar-formulario-para-php-sem-refresh-jquery-ajax/#comments</comments>
		<pubDate>Fri, 20 Jan 2012 09:00:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[formulário]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://wbruno.com.br/blog/?p=1732</guid>
		<description><![CDATA[Eu havia postado, como enviar um formulário com ajax, aproveitando o callback submitHandler do jQuery.validate. Porém, se vc não estiver usando esse plugin, e quiser apenas usar o ajax do jQuery, o seguinte basta: &#60;html> &#60;head> &#60;script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js">&#60;/script> &#60;script type="text/javascript"> jQuery(document).ready(function(){ jQuery('#ajax_form').submit(function(){ var dados = jQuery( this ).serialize(); jQuery.ajax({ type: "POST", url: "processa.php", data: ...]]></description>
			<content:encoded><![CDATA[<p>Eu havia postado, como enviar um formulário com ajax, aproveitando o callback <a href="http://wbruno.com.br/blog/2011/03/21/validar-enviar-formulario-ajax-usando-jquery-validate/" target="_blank">submitHandler do jQuery.validate</a>.</p>
<p>Porém, se vc não estiver usando esse plugin, e quiser apenas usar o ajax do jQuery, o seguinte basta:<br />
<span id="more-1732"></span></p>
<pre name="code" class="html">
&lt;html>
&lt;head>
	&lt;script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js">&lt;/script>
	&lt;script type="text/javascript">
	jQuery(document).ready(function(){
		jQuery('#ajax_form').submit(function(){
			var dados = jQuery( this ).serialize();

			jQuery.ajax({
				type: "POST",
				url: "processa.php",
				data: dados,
				success: function( data )
				{
					alert( data );
				}
			});

			return false;
		});
	});
	&lt;/script>
&lt;/head>
&lt;body>
	&lt;form method="post" action="" id="ajax_form">
		&lt;label>&lt;input type="hidden" name="id" value="" />&lt;/label>
		&lt;label>Nome: &lt;input type="text" name="nome" value="" />&lt;/label>
		&lt;label>Email: &lt;input type="text" name="email" value="" />&lt;/label>
		&lt;label>Telefone: &lt;input type="text" name="telefone" value="" />&lt;/label>

		&lt;label>&lt;input type="submit" name="enviar" value="Enviar" />&lt;/label>
	&lt;/form>
&lt;/body>
&lt;/html>
</pre>
<p>Primeiro eu importo a lib jQuery:</p>
<pre name="code" class="html:firstLine[3]">	&lt;script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js">&lt;/script></pre>
<p>Nada de novo até aqui.</p>
<p>Faço corretamente, e disparo a minha função no evento onsubmit do formulário:</p>
<pre name="code" class="javascript:firstLine[6]">		jQuery('#ajax_form').submit(function(){</pre>
<p>Vi alguns tutoriais( de blogs, fóruns e video aulas ), usando o evento <strong>onclick</strong> do botão submit(ou button), &#8220;fingem&#8221;, que isso funciona, e depois várias pessoas vão aos fóruns, por causa dos problemas gerados por esses códigos mal escritos e incorretos.</p>
<p>O correto é usar no <strong>onsubmit</strong> do form, e &#8220;desativar&#8221; ele, com aquele return false; que envio na linha 19</p>
<pre name="code" class="javascript:firstLine[19]">			return false;</pre>
<p>Daí em diante, não tem segredo, é o mesmo miolo que usei para enviar com o jQuery.validate.<br />
De graça, o método <a href="http://api.jquery.com/serialize/" target="_blank">.serialize()</a>, cria a query string com os dados do formulário, e usamos essa variavel para enviar a função ajax.</p>
<p>Ali no <var>success: function( data ) </var> (linha 13), é o callback que será disparado, assim que a requisição retornar(status 200 e tal).</p>
<p>Bom, é isso =)<br />
Comentem, compartilhem. Sei que é um assunto já bastante &#8220;batido&#8221;, porém não me custava deixar um código bem escrito, até para tentar minimizar os efeitos dos maus tutoriais.</p>
]]></content:encoded>
			<wfw:commentRss>http://wbruno.com.br/2012/01/20/enviar-formulario-para-php-sem-refresh-jquery-ajax/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Setar combo pelo .text() do option &#8211; jQuery</title>
		<link>http://wbruno.com.br/2012/01/19/setar-combo-pelo-text-option-jquery/</link>
		<comments>http://wbruno.com.br/2012/01/19/setar-combo-pelo-text-option-jquery/#comments</comments>
		<pubDate>Thu, 19 Jan 2012 12:58:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[combobox]]></category>
		<category><![CDATA[select]]></category>

		<guid isPermaLink="false">http://wbruno.com.br/blog/?p=1728</guid>
		<description><![CDATA[Apenas repositório mesmo: &#60;script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js">&#60;/script> &#60;script type="text/javascript"> jQuery(document).ready(function(){ var combo = jQuery("select[name='combo']"); jQuery("input[name='selecionar']").click(function(){ var button = jQuery( this ); combo.find("option").each(function(){ if( jQuery( this ).text()==button.val() ) { combo.val( jQuery( this ).val() ); } }); }); }); &#60;/script> &#60;select name="combo"> &#60;option value="2">Selecione&#60;/option> &#60;option value="1">Item 1&#60;/option> &#60;option value="2">Item 2&#60;/option> &#60;option value="3">Item 3&#60;/option> &#60;/select> &#60;input type="button" name="selecionar" value="Item ...]]></description>
			<content:encoded><![CDATA[<p>Apenas repositório mesmo:<br />
<span id="more-1728"></span></p>
<pre name="code" class="html">
&lt;script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js">&lt;/script>
&lt;script type="text/javascript">
jQuery(document).ready(function(){
	var combo = jQuery("select[name='combo']");

	jQuery("input[name='selecionar']").click(function(){
		var button = jQuery( this );
		combo.find("option").each(function(){
			if( jQuery( this ).text()==button.val() )
			{
				combo.val( jQuery( this ).val() );
			}
		});
	});	

});
&lt;/script>

&lt;select name="combo">
	&lt;option value="2">Selecione&lt;/option>
	&lt;option value="1">Item 1&lt;/option>
	&lt;option value="2">Item 2&lt;/option>
	&lt;option value="3">Item 3&lt;/option>
&lt;/select>

&lt;input type="button" name="selecionar" value="Item 1" />
&lt;input type="button" name="selecionar" value="Item 2" />
&lt;input type="button" name="selecionar" value="Item 3" />
</pre>
]]></content:encoded>
			<wfw:commentRss>http://wbruno.com.br/2012/01/19/setar-combo-pelo-text-option-jquery/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Galerias de imagens com jQuery.lightBox do Leandro Vieira</title>
		<link>http://wbruno.com.br/2012/01/19/galerias-de-imagens-jquery-lightbox-leandro-vieira/</link>
		<comments>http://wbruno.com.br/2012/01/19/galerias-de-imagens-jquery-lightbox-leandro-vieira/#comments</comments>
		<pubDate>Thu, 19 Jan 2012 04:14:32 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[lightbox]]></category>

		<guid isPermaLink="false">http://wbruno.com.br/blog/?p=1725</guid>
		<description><![CDATA[Muito bom o plugin jQuery de lightbox do brasileiro Leandro Vieira: leandrovieira.com/projects/jquery/lightbox/ é verdade que o projeto está &#8216;sem atualizações&#8217;, mas também nem precisa. O plugin cumpre o papel dele, funciona perfeitamente e para um simples modal de imagens funciona muito bem, obrigado. Precisei ontem, de uma galeria, onde várias classes seriam as disparadoras. Este ...]]></description>
			<content:encoded><![CDATA[<p>Muito bom o plugin jQuery de lightbox do brasileiro Leandro Vieira:<br />
<a href="http://leandrovieira.com/projects/jquery/lightbox/">leandrovieira.com/projects/jquery/lightbox/</a></p>
<p>é verdade que o projeto está &#8216;sem atualizações&#8217;, mas também nem precisa.<br />
O plugin cumpre o papel dele, funciona perfeitamente e para um simples modal de imagens funciona muito bem, obrigado.<br />
<span id="more-1725"></span><br />
Precisei ontem, de uma galeria, onde várias classes seriam as disparadoras. Este html:</p>
<pre class="html" name="code">
&lt;ul class="fotos">
	&lt;li class="lightbox">&lt;a href="images/banner-primeira-diretoria-eleita-da-abtf.jpg" title="Primeira Diretoria Eleita da ABTF">
		&lt;img src="images/banner-primeira-diretoria-eleita-da-abtf.jpg" alt="" />&lt;/a>&lt;p>Primeira Diretoria Eleita da ABTF&lt;/p>
		&lt;div style="display: none;">
			&lt;a href="images/banner-primeira-diretoria-eleita-da-abtf.jpg" title="Imagem 2">
				&lt;img src="images/banner-primeira-diretoria-eleita-da-abtf.jpg" alt="" />&lt;/a>
			&lt;a href="images/banner-primeira-diretoria-eleita-da-abtf.jpg" title="Imagem 3">
				&lt;img src="images/banner-primeira-diretoria-eleita-da-abtf.jpg" alt="" />&lt;/a>
			&lt;a href="images/banner-primeira-diretoria-eleita-da-abtf.jpg" title="Imagem 4">
				&lt;img src="images/banner-primeira-diretoria-eleita-da-abtf.jpg" alt="" />&lt;/a>
		&lt;/div>&lt;!-- /none -->
	&lt;/li>
	&lt;li class="lightbox">&lt;a href="images/banner-presidentes-da-abtf.jpg" title="Presidentes da ABTF">
		&lt;img src="images/banner-presidentes-da-abtf.jpg" alt="" />&lt;/a>&lt;p>Presidentes da ABTF&lt;/p>
		&lt;div style="display: none;">
			&lt;a href="images/banner-presidentes-da-abtf.jpg" title="Imagem 2">
				&lt;img src="images/banner-presidentes-da-abtf.jpg" alt="" />&lt;/a>
			&lt;a href="images/banner-presidentes-da-abtf.jpg" title="Imagem 3">
				&lt;img src="images/banner-presidentes-da-abtf.jpg" alt="" />&lt;/a>
		&lt;/div>&lt;!-- /none -->
	&lt;/li>
	&lt;li class="lightbox last">&lt;a href="images/banner-diretoria-atual.jpg" title="Diretoria Atual">
		&lt;img src="images/banner-diretoria-atual.jpg" alt="" />&lt;/a>&lt;p>Diretoria Atual&lt;/p>
		&lt;div style="display: none;">
			&lt;a href="images/banner-diretoria-atual.jpg" title="Imagem 2">
				&lt;img src="images/banner-diretoria-atual.jpg" alt="" />&lt;/a>
		&lt;/div>&lt;!-- /none -->
	&lt;/li>
&lt;/ul>&lt;!-- /fotos -->
</pre>
<p>Não achei nenhuma configuração de galeria no plugin.<br />
Então ao disparar da maneira básica:</p>
<pre name="code" class="javascript">
	jQuery(document).ready(function(){
		jQuery('.lightbox a').lightBox({
			txtImage: 'Imagem',
			txtOf: 'de'
		});
	});</pre>
<p>O que o plugin fez, foi juntar todas as imagens numa única galeria de 9 imagens no total.<br />
Mas na verdade, eu queria que cada LI, fosse um album separado dos demais.<br />
Sendo a primeira galeria, com 4 imagens, a segunda com 3, e a ultima com 2 imagens.</p>
<p>Bom, eu poderia muito bem trocar de plugin, usar um fancybox, ou sei lá.. porém apenas pelo desafio, resolvi de uma maneira bem simples essa situação de: criar galerias diferentes para uma mesma classe html, com o plugin jQuery.lightBox:</p>
<pre name="code" class="javascript">
	jQuery(document).ready(function(){
		jQuery('.lightbox').each(function(){
			$( this ).find('a').lightBox({
				txtImage: 'Imagem',
				txtOf: 'de'
			});
		});
	});
</pre>
<p> Dessa forma, o plugin vai rodar um grupo(cada li), um de cada vez, e vai separou como eu queria.</p>
<p>é isso. =)</p>
]]></content:encoded>
			<wfw:commentRss>http://wbruno.com.br/2012/01/19/galerias-de-imagens-jquery-lightbox-leandro-vieira/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Capturar lista de email dos comentários do seu WordPress e outras queries úteis</title>
		<link>http://wbruno.com.br/2012/01/11/capturar-lista-de-email-dos-comentarios-seu-wordpress-outras-queries-uteis/</link>
		<comments>http://wbruno.com.br/2012/01/11/capturar-lista-de-email-dos-comentarios-seu-wordpress-outras-queries-uteis/#comments</comments>
		<pubDate>Wed, 11 Jan 2012 09:00:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[SQL]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://wbruno.com.br/blog/?p=1720</guid>
		<description><![CDATA[Boas galera, resolvi colocar algumas queries úteis aqui. Coisa bem simples mesmo. Capturar lista de email dos comentários do seu WordPress SELECT DISTINCT(comment_author_email), comment_author FROM `wp_comments` WHERE comment_author_email'' Nessa query eu peço apenas o nome e o email do autor do comentário. O WHERE ali, é para excluir os trackback, pois eles são inseridos nessa tabela ...]]></description>
			<content:encoded><![CDATA[<p>Boas galera,</p>
<p>resolvi colocar algumas queries úteis aqui. Coisa bem simples mesmo.<br />
<span id="more-1720"></span></p>
<h2>Capturar lista de email dos comentários do seu WordPress</h2>
<pre name="code" class="sql">SELECT DISTINCT(comment_author_email), comment_author
FROM `wp_comments`
WHERE comment_author_email<>''</pre>
<p>Nessa query eu peço apenas o nome e o email do autor do comentário.</p>
<p>O WHERE ali, é para excluir os trackback, pois eles são inseridos nessa tabela também, mas não enviam um email válido.<br />
o DISTINCT serve para limpar um pouco o mailing, e não trazer nenhum email repetido. Eu poderia ter feito o mesmo usando um GROUP BY.</p>
<h2>Remover revisões de posts</h2>
<p>Dificilmente eu uso esse recurso(para recuperar algo), mas como ele é automático, vários e vários registros são criados no banco por causa dele.</p>
<pre name="code" class="sql">SELECT * FROM wp_posts WHERE post_type = 'revision';</pre>
<p>Basta trocar o SELECT * por um DELETE, e teremos excluido as revisões. Aqui, contabilizou quase 500 revisões.</p>
<h2>Remover rascunhos automáticos</h2>
<p>Um pouco menos &#8220;problemático&#8221;, que as revisões, mas mesmo assim, não deixam de ser &#8220;sujeiras&#8221; no banco.</p>
<pre name="code" class="sql">SELECT * FROM `wp_posts` WHERE `post_status` = 'auto-draft'</pre>
<p>No instante em que rodei essa query, só peguei um único registro.</p>
<h2>O número de registros no banco, não bate com meu número de posts</h2>
<p>Calma, é assim mesmo. &#8220;Estranhamente&#8221;, do ponto de vista de modelagem SQL, o WordPress usa a tabela wp_posts, para também guardar o path dos arquivos que subimos no meio do post(imagens, videos..)</p>
<pre name="code" class="sql">SELECT * FROM `wp_posts` WHERE `post_type` <> 'post';</pre>
<p><strong>Não delete!</strong> a menos que vc saiba oque está fazendo. (Excluir aqui, não apaga o arquivo real, portanto não quebra o seu post).<br />
É apartir dessa tabela que o WP faz a listagem que vemos em Media -> Library<br />
(note que temos post_type como inhreit, e post_parent como o ID do post, no qual subimos aquela imagem).</p>
<p>Bom, acho que é isso.<br />
Se tiverem mais idéias de queries ou alguma outra forma de conseguir esses dados(resultados), me digam. =)<br />
E se vc usou, comente por aqui também.</p>
<h2>Todas essas operações são por sua própria conta e risco</h2>
<p>Salve um backup antes de brincar com o seu banco, e eu não me responsabilizo por absolutamente nada. Nem tenho como. =)</p>
]]></content:encoded>
			<wfw:commentRss>http://wbruno.com.br/2012/01/11/capturar-lista-de-email-dos-comentarios-seu-wordpress-outras-queries-uteis/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Acessando o mysql apartir do terminal no MAC</title>
		<link>http://wbruno.com.br/2012/01/10/acessando-mysql-apartir-terminal-mac/</link>
		<comments>http://wbruno.com.br/2012/01/10/acessando-mysql-apartir-terminal-mac/#comments</comments>
		<pubDate>Tue, 10 Jan 2012 12:34:36 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[SQL]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[terminal]]></category>

		<guid isPermaLink="false">http://wbruno.com.br/blog/?p=1714</guid>
		<description><![CDATA[Mac:~ william$ alias mysql=/usr/local/mysql/bin/mysql Mac:~ william$ alias mysqladmin=/usr/local/mysql/bin/mysqladmin Mac:~ william$ mysql -u root -p wordpress Enter password: Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id ...]]></description>
			<content:encoded><![CDATA[<pre name="code" class="bash">Mac:~ william$ alias mysql=/usr/local/mysql/bin/mysql
Mac:~ william$ alias mysqladmin=/usr/local/mysql/bin/mysqladmin
Mac:~ william$ mysql -u root -p wordpress
Enter password:
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 62
Server version: 5.5.17 MySQL Community Server (GPL)

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show tables;
+-----------------------+
| Tables_in_wordpress   |
+-----------------------+
| wp_commentmeta        |
| wp_comments           |
| wp_links              |
| wp_options            |
| wp_postmeta           |
| wp_posts              |
| wp_term_relationships |
| wp_term_taxonomy      |
| wp_terms              |
| wp_usermeta           |
| wp_users              |
+-----------------------+
11 rows in set (0.00 sec)

mysql>
</pre>
]]></content:encoded>
			<wfw:commentRss>http://wbruno.com.br/2012/01/10/acessando-mysql-apartir-terminal-mac/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Primeiro Desafio wbruno de PHP</title>
		<link>http://wbruno.com.br/2012/01/04/primeiro-desafio-wbruno-de-php/</link>
		<comments>http://wbruno.com.br/2012/01/04/primeiro-desafio-wbruno-de-php/#comments</comments>
		<pubDate>Wed, 04 Jan 2012 18:33:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[desafio]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://wbruno.com.br/blog/?p=1700</guid>
		<description><![CDATA[Salve salve !!! Vou fazer uma tentativa.. desafiozinho simples.. qndo eu tiver umas 3 respostas(certas ou não), eu divulgo a minha solução.(podem continuar enviando as suas contribuições, mesmo que eu já tenha colocado a minha). Resolva com 2 loops. Se conseguir, resolva com um único loop. O desafio, é gerar o resultado abaixo(na imagem), usando ...]]></description>
			<content:encoded><![CDATA[<p>Salve salve !!!</p>
<p>Vou fazer uma tentativa.. desafiozinho simples.. qndo eu tiver umas 3 respostas(certas ou não), eu divulgo a minha solução.(podem continuar enviando as suas contribuições, mesmo que eu já tenha colocado a minha).</p>
<p>Resolva com <strong>2 loops</strong>. Se conseguir, resolva com <strong>um único loop.</strong><br />
<span id="more-1700"></span><br />
O desafio, é gerar o resultado abaixo(na imagem), usando php(seu php vai gerar algum html).<br />
<a href="http://wbruno.com.br/blog/wp-content/uploads/2012/01/Screen-shot-2012-01-04-at-4.33.25-PM.png"><img src="http://wbruno.com.br/blog/wp-content/uploads/2012/01/Screen-shot-2012-01-04-at-4.33.25-PM-242x300.png" alt="" title="Screen shot 2012-01-04 at 4.33.25 PM" width="242" height="300" class="aligncenter size-medium wp-image-1701" /></a></p>
<p>Podem me enviar o código pelo <a href="http://www.pastebin.com" target="_blank">www.pastebin.com</a>, aqui pelos comentários do blog mesmo.<br />
é isso!</p>
<p>O melhor algorítmo(mais elegante) vence.</p>
<p>Boa Sorte!</p>
<p>.<br />
.<br />
.<br />
.<br />
.<br />
.<br />
.<br />
.<br />
.<br />
.<br />
.<br />
.<br />
.</p>
<h2>Minha solução com 2 loops encaixados:</h2>
<pre name="code" class="php">
&lt;style type="text/css">
#grid td {
	width: 25px;
	height: 25px;
	text-align: center;
}
#grid td.diagonal {
	background: #000;
	color: #f00;
}
&lt;/style>
&lt;table id="grid">
&lt;?php
	for( $i=1; $i&lt;10; $i++ )
	{
		echo '&lt;tr>';
		for( $j=1; $j&lt;10; $j++ )
		{
			$class = $i==$j || $i+$j==10 ? ' class="diagonal"' : '';
			$text = $i==5 || $j==5 ? '+' : '-';

			echo '&lt;td'.$class.'>'.$text.'&lt;/td>';
		}
		echo '&lt;/tr>';
	}

?>
&lt;/table></pre>
<h2>Agora, resolvam com um único loop!</h2>
<p><strong>Com 2 encaixados é fácil ne?!</strong><br />
Mesma imagem, mesmas regras. <strong>Consegue ?</strong></p>
<h2>Minha solução com apenas um único loop</h2>
<pre name="code" class="php">
&lt;style type="text/css">
#grid td {
	width: 25px;
	height: 25px;
	text-align: center;
}
#grid td.diagonal {
	background: #000;
	color: #f00;
}
&lt;/style>
&lt;table id="grid">
&lt;tr>
&lt;?php
	$j = 1;
	$k = 1;
	for( $i=0; $i&lt;81; $i++ )
	{
		$ctrl = $i!=0 &#038;&#038; $i%9==0;
		if( $ctrl ) echo '&lt;/tr>'.PHP_EOL.'&lt;tr>'.PHP_EOL;

		$class = $j==$k || $j+$k==10 ? ' class="diagonal"' : '';
		$text = $j==5 || $k==5 ? '+' : '-'; 

		echo "\t".'&lt;td'.$class.'>'.$text.'&lt;/td>'.PHP_EOL;

		$j = $j>=9 ? 1 : $j+1;
		$k = $j==1 ? $k+1 : $k;
	}
?>
&lt;/tr>
&lt;/table>
</pre>
]]></content:encoded>
			<wfw:commentRss>http://wbruno.com.br/2012/01/04/primeiro-desafio-wbruno-de-php/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Afinal, o que são funções ?</title>
		<link>http://wbruno.com.br/2012/01/02/afinal-sao-funcoes/</link>
		<comments>http://wbruno.com.br/2012/01/02/afinal-sao-funcoes/#comments</comments>
		<pubDate>Mon, 02 Jan 2012 14:18:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[funções]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://wbruno.com.br/blog/?p=1595</guid>
		<description><![CDATA[Função &#8220;Funções descrevem relações matemáticas entre dois objetos, x e f(x) = y&#8221;. &#8220;Onde o objeto x é o argumento da função f, e y é o objeto dependente de x&#8221;. &#8220;Sejam A e B conjuntos não vazios, qualquer relação de A e B, que associa cada elemento de A a um único elemento de ...]]></description>
			<content:encoded><![CDATA[<p><a href="http://pt.wikipedia.org/wiki/Fun%C3%A7%C3%A3o">Função</a><br />
&#8220;Funções descrevem relações matemáticas entre dois objetos, x e f(x) = y&#8221;.<br />
&#8220;Onde o objeto x é o <strong>argumento</strong> da função f, e y é o objeto dependente de x&#8221;.</p>
<p>&#8220;Sejam A e B conjuntos não vazios, qualquer relação de A e B, que associa cada elemento de A a um único elemento de B, chamamos de função de A em B&#8221;.</p>
<p>Ops.. blog errado ?<br />
<span id="more-1595"></span><br />
Não não! Aqui eu falo sobre programação, e não por descuido comecei falando matematicamente.<br />
Em programação também temos o conceito de funções.</p>
<p>E nesse nosso mundo também, enviamos argumentos, e obtemos um resultado:</p>
<pre name="code" class="php">echo ola( 'Bruno' ); // "Olá, Bruno!"
echo ola( 'uiLL' ); // "Olá, uiLL!"</pre>
<p>Cada valor que eu envio para a função <strong>ola()</strong>, me retorna uma saída diferente.</p>
<p>Usamos funções em programação, para &#8220;encapsular&#8221; rotinas. Seria muito chato se tivéssemos que repensar/reescrever uma certa coisa, cada vez que fossemos querer usá-la.</p>
<p>Por exemplo:</p>
<pre name="code" class="php">
&lt;?php
$id = isset( $_GET['id'] ) ? $_GET['id'] : null;
$ctrl = isset( $_GET['ctrl'] ) ? $_GET['ctrl'] : null;
</pre>
<p>Por menor que seja, <strong>qualquer duplicação</strong> de código deve nos incomodar.<br />
Em vez de ficar colocando os ifs ternários, um embaixo do outro, para quantas variaveis da query string eu quiser resgatar, eu posso melhorar o script assim:</p>
<pre name="code" class="php">
&lt;?php
function getGet( $key ){
    return isset( $_GET[ $key ] ) ? $_GET[ $key ] : null;
}
$id = getGet('id');
$ctrl = getGet('ctrl');;
</pre>
<p>Ganhamos bastante com isso. Imagine que eu vá aplicar um filtro, em todas as variaveis que receber, até para evitar alguns injections:</p>
<pre name="code" class="php">
&lt;?php
function getGet( $key ){
    return isset( $_GET[ $key ] ) ? filter( $_GET[ $key ] ) : null;
}
function filter( $str ){
    $str = addslashes( $str );//aqui vem a implementação do filtro
    return str_replace( '#', '', $str );
}
$id = getGet('id');
$ctrl = getGet('ctrl');;
</pre>
<p>Bem limpo ne?!<br />
Só alterei a função getGet(), e adicionei a filter() nela. Bem melhor doque:</p>
<pre name="code" class="php">
&lt;?php
$id = isset( $_GET['id'] ) ? filter( $_GET['id'] ) : null;
$ctrl = isset( $_GET['ctrl'] ) ? filter( $_GET['ctrl'] ) : null;
</pre>
<p>ou então:</p>
<pre name="code" class="php">
&lt;?php
$id = isset( $_GET['id'] ) ? addslashes( str_replace( '#', '', $_GET['id'] ) ) : null;
$ctrl = isset( $_GET['ctrl'] ) ? addslashes( str_replace( '#', '', $_GET['ctrl'] ) ) : null;
</pre>
<h2>return ou echo ?</h2>
<p>Vou criar uma função para saber quanto é 10% de qualquer valor. (poderia ser algo bem mais complicado).</p>
<pre name="code" class="php">
&lt;?php
function dezPorcento( $val ){
    echo $val*0.1;
}</pre>
<p>E então posso usar essa function sempre que eu precisar:</p>
<pre name="code" class="html">
&lt;strong>Economize: &lt;?php dezPorcento(1000); ?> na compra da TV&lt;/strong>
&lt;strong>Economize: &lt;?php dezPorcento(25); ?> na compra desse pen drive&lt;/strong>
</pre>
<p>Mas e se eu precisar desse mesmo resultado em &#8220;varios locais&#8221; ?</p>
<pre name="code" class="html">
&lt;strong>TV: de 1000 por apenas: &lt;?php echo 1000-dezPorcento(1000); ?>&lt;/strong>
</pre>
<p>o &#8220;echo&#8221; que coloquei no meio da função, já me impediria de fazer essa conta. Pois já fiz a saída do dado. E não tenho mais como &#8220;reutilizar&#8221;.</p>
<p>O correto seria:
<pre name="code" class="php">&lt;?php
function dezPorcento( $val ){
    return $val*0.1;
}</pre>
<p>Dessa forma sim, consigo fazer a conta.<br />
Note que, em vias de regra, <strong>sempre use return</strong> em suas funções.(salvos alguns casos especiais)</p>
<p>Funções nos ajudam a organizar o código, a reutilizar rotinas(evitam duplicação), a subdividir problemas(podemos usar várias funções para resolver um problema grande, qnto menor cada função, mais reutilizável ela será).</p>
]]></content:encoded>
			<wfw:commentRss>http://wbruno.com.br/2012/01/02/afinal-sao-funcoes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pegar &lt;title&gt; de iframe, e jogar no documento pai</title>
		<link>http://wbruno.com.br/2011/12/29/pegar-de-iframe-jogar-documento-pai/</link>
		<comments>http://wbruno.com.br/2011/12/29/pegar-de-iframe-jogar-documento-pai/#comments</comments>
		<pubDate>Thu, 29 Dec 2011 13:33:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[iframe]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://wbruno.com.br/blog/?p=1672</guid>
		<description><![CDATA[Dúvida que vi no fórum. Pegar o valor da tag title de um iframe, e colocar ele em um titulo do lado de fora, do documento pai. Não é &#8216;tão simples&#8217; assim, e notei um probleminha: &#8216;o iframe precisa ser carregado antes de tentarmos pegar o conteúdo dele&#8217;. Bom, resolvi dessa forma: &#60;html> &#60;head> &#60;script ...]]></description>
			<content:encoded><![CDATA[<p>Dúvida que vi no fórum.</p>
<p>Pegar o valor da tag title de um iframe, e colocar ele em um titulo do lado de fora, do documento pai.<br />
Não é &#8216;tão simples&#8217; assim, e notei um probleminha: &#8216;o iframe precisa ser carregado antes de tentarmos pegar o conteúdo dele&#8217;.</p>
<p><span id="more-1672"></span><br />
Bom, resolvi dessa forma:</p>
<pre name="code" class="html">
&lt;html>
&lt;head>
&lt;script type="text/javascript" src="jquery.min.js">&lt;/script>
&lt;script type="text/javascript">
jQuery(document).ready(function(){
	jQuery('#menu a').click(function( e ){

		jQuery('#content').load(function(){
			var titulo = jQuery('#content').contents().find('title').text();
			jQuery('#titulo').text( titulo );
		});
	});
});
&lt;/script>
&lt;/head>
&lt;body>
	&lt;ul id="menu">
		&lt;li>&lt;a href="home.html" target="content">Home&lt;/a>&lt;/li>
		&lt;li>&lt;a href="cadastro.html" target="content">Cadastro&lt;/a>&lt;/li>
		&lt;li>&lt;a href="contato.html" target="content">Contato&lt;/a>&lt;/li>
	&lt;/ul>&lt;!-- /menu -->
	&lt;h1 id="titulo">Home&lt;/h1>
	&lt;iframe name="content" id="content" src="home.html"  width="99.9%" frameborder="0" scrolling="no" >&lt;/iframe>
&lt;/body>
&lt;/html></pre>
<p>Por esse motivo, depois do clique, eu aguardo o evento &#8216;onload&#8217; do iframe:</p>
<pre name="code" class="javascript">		jQuery('#content').load(function(){</pre>
<p>Sse vc não quiser incorporar a lib jQuery, e também para provar que jQuery é apenas javascript, segue a mesma funcionalidade, usando apenas js puro:</p>
<pre name="code" class="javascript:firstLine[4]">
function id( el )
{
	return document.getElementById( el );
}
window.onload = function()
{
	id('content').onload = function()
	{
		var titulo = this.contentWindow.document.getElementsByTagName('title')[0].innerHTML;
		id('titulo').innerHTML = titulo;
	};
}</pre>
<p>é isso =)<br />
Se for útil, comente e compartilhe. Esse é o único &#8216;pagamento&#8217; que peço pelos códigos(conhecimento) que disponibilizo.</p>
]]></content:encoded>
			<wfw:commentRss>http://wbruno.com.br/2011/12/29/pegar-de-iframe-jogar-documento-pai/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Carregando sem refresh, várias áreas diferentes de um site &#8211; jQuery.ajax</title>
		<link>http://wbruno.com.br/2011/12/29/carregando-sem-refresh-varias-areas-diferentes-de-um-site-jquery-ajax/</link>
		<comments>http://wbruno.com.br/2011/12/29/carregando-sem-refresh-varias-areas-diferentes-de-um-site-jquery-ajax/#comments</comments>
		<pubDate>Thu, 29 Dec 2011 12:55:46 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://wbruno.com.br/blog/?p=1663</guid>
		<description><![CDATA[Eu já postei aqui no meu blog, como carregar conteudo com ajax em div, daí, aprimorei aquele código, e mostrei como carregar conteudo com ajax, colocando também um gif de loading.. e também como fazer tudo isso de cima, ainda trocando a URL, e usando um plugin na página interna. Hoje é dia de carregar ...]]></description>
			<content:encoded><![CDATA[<p>Eu já postei aqui no meu blog, como <a href="http://wbruno.com.br/blog/2011/03/30/navegacao-sem-refresh-carregando-conteudo-ajax-em-div/" target="_blank">carregar conteudo com ajax em div</a>, daí, aprimorei aquele código, e mostrei como <a href="http://wbruno.com.br/blog/2011/05/27/navegacao-sem-refresh-%E2%80%93-carregando-conteudo-ajax-em-div-2/" target="_blank">carregar conteudo com ajax, colocando também um gif de loading</a>.. e também como fazer tudo isso de cima, ainda <a href="http://wbruno.com.br/blog/2011/11/25/carregando-conteudo-ajax-trocando-url-jquery/" target="_blank">trocando a URL, e usando um plugin na página interna</a>.</p>
<p>Hoje é dia de carregar várias divs &#8216;separadas&#8217;, várias áreas diferentes com ajax.<br />
<span id="more-1663"></span><br />
Já vi no fórum um cara(com dúvida) resolvendo isso, de uma forma &#8216;natural&#8217; do ponto de vista de pensamento humano, mas terrível para performance e manutenção do site.</p>
<p>O código que ele usou era mais ou menos assim:</p>
<pre name="code" class="javascript:firstLine[6]">
jQuery(document).ready(function(){
	var sidebar = jQuery('#sidebar');
	var content = jQuery('#content');
	var other = jQuery('#other');

	jQuery('#menu a').click(function( e ){
		e.preventDefault();
		if( jQuery( this ).attr('href')=='home.html' )
		{
			sidebar.load('home_sidebar.html');
			content.load('home_content.html');
			other.load('home_other.html');
		}
		else if( jQuery( this ).attr('href')=='cadastro.html' )
		{
			sidebar.load('cadastro_sidebar.html');
			content.load('cadastro_content.html');
			other.load('cadastro_other.html');
		}
	});
});
</pre>
<p>Ou seja, a cada clique em um link do menu, ele fazia 3 requests. Um para cada &#8216;área&#8217; do site.<br />
Tinha que manter 3 arquivos distintos para cada link, e esse jogo de if/else para saber quais arquivos ele deve invocar.</p>
<blockquote><p>Isso deve ter um &#8216;mau cheiro&#8217;.</p></blockquote>
<p>A cada clique fazer 3 requisições, e ter que manter 3 arquivos separados para cada área.. além de que o site &#8216;não vai funcionar corretamente&#8217;, se o suporte a js estiver desabilitado&#8230; muitos motivos para evidenciar que algo está errado.</p>
<blockquote><p>Mas então, o que podemos fazer?</p></blockquote>
<p>A minha sugestão, é aproveitar o ótimo parser de HTML da lib jQuery, fazer um único request, e então direcionar cada conteúdo para o local específico.</p>
<pre name="code" class="html">
&lt;html>
&lt;head>
&lt;script type="text/javascript" src="jquery.min.js">&lt;/script>
&lt;script type="text/javascript">
jQuery(document).ready(function(){
	var sidebar = jQuery('#sidebar');
	var content = jQuery('#content');
	var other = jQuery('#other');

	request( 'home.html' );

	function m_load( data )
	{
		var text = jQuery( '&lt;div>'+data+'&lt;/div>' );//forçando o parser

		sidebar.html( text.find('#sidebar').html() );
		content.html( text.find('#content').html() );
		other.html( text.find('#other').html() );

		jQuery(document).attr( 'title', text.find('title').html() );
	}
	function request( file )
	{
		jQuery.ajax({
			url: file,
			success: function( data )
			{
				m_load( data );
			}
		});
	}
	jQuery('#menu a').click(function( e ){
		e.preventDefault();
		request( jQuery( this ).attr('href') );
	});
});

&lt;/script>
&lt;/head>
&lt;body>
	&lt;ul id="menu">
		&lt;li>&lt;a href="home.html">Home&lt;/a>&lt;/li>
		&lt;li>&lt;a href="cadastro.html">Cadastro&lt;/a>&lt;/li>
		&lt;li>&lt;a href="contato.html">Contato&lt;/a>&lt;/li>
	&lt;/ul>&lt;!-- /menu -->
	&lt;div id="sidebar">

	&lt;/div>&lt;!-- /sidebar -->
	&lt;div id="content">

	&lt;/div>&lt;!-- /content -->
	&lt;div id="other">

	&lt;/div>&lt;!-- /other -->
&lt;/body>
&lt;/html>
</pre>
<p>Note que além de fazer o parser do retorno:</p>
<pre name="code" class="javascript:firstLine[14]">
		var text = jQuery( '&lt;div>'+data+'&lt;/div>' );//forçando o parser

		sidebar.html( text.find('#sidebar').html() );
		content.html( text.find('#content').html() );
		other.html( text.find('#other').html() );</pre>
<p>eu também faço a troca do title do documento:</p>
<pre name="code" class="javascript:firstLine[20]">		jQuery(document).attr( 'title', text.find('title').html() );</pre>
<h2><a href="http://wbruno.com.br/scripts/index_3areas.html">Demonstração</a></h2>
<p>Se vc tiver o firebug instalado, confira na aba Net|Rede -> xhr que faço apenas uma requisição.</p>
]]></content:encoded>
			<wfw:commentRss>http://wbruno.com.br/2011/12/29/carregando-sem-refresh-varias-areas-diferentes-de-um-site-jquery-ajax/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Afinal, oque é Crescer Profissionalmente ?</title>
		<link>http://wbruno.com.br/2011/12/14/afinal-oque-e-crescer-profissionalmente/</link>
		<comments>http://wbruno.com.br/2011/12/14/afinal-oque-e-crescer-profissionalmente/#comments</comments>
		<pubDate>Wed, 14 Dec 2011 13:00:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Opinião]]></category>
		<category><![CDATA[crescer]]></category>
		<category><![CDATA[profissão]]></category>

		<guid isPermaLink="false">http://wbruno.com.br/blog/?p=1645</guid>
		<description><![CDATA[Um post motivacional. Sim, hoje é meu aniversário. Exatamente as 11 horas da manhã de hoje, completo 23 anos de vida. Fazem vinte e três &#8220;desde o instante em que nasci&#8221;. Se for contar &#8220;apartir de quando eu me lembro&#8221;, teria que adiar a contagem, para depois dos 12 anos.. pois realmente antes disso, é ...]]></description>
			<content:encoded><![CDATA[<p>Um post motivacional.</p>
<p>Sim, hoje é meu aniversário. Exatamente as 11 horas da manhã de hoje, completo 23 anos de vida. Fazem vinte e três <em>&#8220;desde o instante em que nasci&#8221;</em>.<br />
Se for contar <em>&#8220;apartir de quando eu me lembro&#8221;</em>, teria que adiar a contagem, para depois dos 12 anos.. pois realmente antes disso, é tudo muito vago nas minhas memórias.</p>
<p>Comecei a trabalhar com 16 anos. Estagiário Técnico na Porto Seguro &#8211; Proteção Patrimonial.<br />
Então, se fosse contar apartir daí, a minha <em>&#8220;vida profissional&#8221;</em>, seria de apenas 7 anos. Não trabalhei direto, desde então.. logo podemos contar algumas &#8220;férias&#8221;(entre um lugar e outro). Somando, seriam oficialmente:<br />
1 ano como estagiário +<br />
6 meses como assistente de manutenção de micros em campo +<br />
2 anos e meio para uma agência web(sem férias durante esse período) +<br />
quase 1 ano agora, no trabalho atual.<br />
<span id="more-1645"></span><br />
São 5 anos ao todo. Então posso dizer que &#8220;a minha carreira&#8221;, soma 5 anos. Isso não me parece &#8220;tão pouco assim&#8221;. É mais que 20% do meu tempo de vida total, e quase 50% da &#8220;vida, desde que eu me lembro&#8221;.</p>
<p><strong>Cresci profissionalmente</strong> neste período. E não me refiro a dizer que &#8220;estou ganhando mais&#8221;.<br />
Sim, estou, mas não é somente isso que importa. Como estagiário, meu salário era de 2.48 por hora. Com algumas horas extras, eu tirava R$200.00 líquidos no fim de cada mês.<br />
<a href="http://wbruno.com.br/blog/wp-content/uploads/2011/12/29032010dinheiro009.jpg"><img src="http://wbruno.com.br/blog/wp-content/uploads/2011/12/29032010dinheiro009-300x168.jpg" alt="" title="29032010dinheiro009" width="300" height="168" class="aligncenter size-medium wp-image-1649" /></a><br />
Mas não é isso que significou &#8220;crescer&#8221; para mim.</p>
<p>Quando digo que quero evoluir, significa que antes eu &#8220;imprimia folhas de monitoramento das rotas dos caminhões, fazia cadastros no access, elaborava planilhas e bds para otimizar o trabalho, &#8230;&#8221;, e agora eu trabalho programando sites. Analisando rotinas lógicas, desenvolvendo scripts, testando, controlando versão com GIT, garantindo semântica da marcação, garantindo uma degração graciosa, e o máximo de compatibilidade crossbrowser possível..</p>
<p>Sim, eu cresci. O meu trabalho atual exige muito mais de mim, do que o meu primeiro. Em cada um deles, cada vez que mudei foi assim.</p>
<blockquote style="font-size: 14px"><p>O dinheiro é apenas consequência. <br />
Melhor salário vem junto com o seu merecimento por ele. </p></blockquote>
<p>Ninguém merece ganhar mais, se continuar fazendo o mesmo de sempre. Se nesses 5 anos, eu ainda estivesse &#8220;imprimindo folhas&#8221;, eu não teria evoluído como profissional. Teria muito menos experiência e conhecimento sobre &#8220;outros assuntos&#8221;..</p>
<p>Esta é a minha definição de &#8220;crescer&#8221;. Sucesso profissional para mim, é <strong>não parar de evoluir</strong>. Não estacionar.</p>
<blockquote><p>Estar contente com o que faz. Fazer o melhor. Errar. Corrigir. Diminuir os erros. Continuar melhorando progressivamente, e então quebrar todos os paradigmas e recomeçar. Sou movido a desafios. </p></blockquote>
<p>Puxe a responsabilidade para ti. E acredite que a situação profissional em que você se encontra, se deve exclusivamente por sua própria culpa. Culpe a si mesmo. E se vanglorie nas suas vitórias. </p>
<p>Não queira ser melhor que seu colega. <strong>Seja melhor que você mesmo</strong>. Supere seus limites, as suas barreiras são impostas por você mesmo. Não se limite.</p>
<p><a href="http://wbruno.com.br/blog/wp-content/uploads/2011/12/colunista.jpg"><img src="http://wbruno.com.br/blog/wp-content/uploads/2011/12/colunista.jpg" alt="" title="colunista" width="215" height="290" class="alignleft size-full wp-image-1647" /></a> Fazer &#8220;mais do mesmo&#8221; todos os dias é muito fácil e muito cômodo. Porém é o &#8220;preguiçoso&#8221;, e nada mais que apenas a tua <strong>obrigação mínima</strong>. Aquele que &#8220;faz oque mandam&#8221;, é o funcionário que justifica o salário. Nem mais e nem menos.<br />
É para isso que ele recebe.</p>
<p>Aquele que não faz direito nem oque lhe pedem, não justifica e nem mereceria estar ganhando oque está. O problema, é que os que estão nessa situação, parecem não perceber, pois deveriam voltar um passo.</p>
<p>Aquele que cumpre o seu papel com excelência, e sempre procura &#8220;o algo a mais&#8221;, merece reconhecimento.<br />
Reconhecimento não é apenas &#8220;números positivos maiores no extrato depois do dia 5&#8243;. Reconhecimento é um &#8220;Parabéns !&#8221;, é um &#8220;foi ele quem fez isso&#8221;, é um &#8220;essa solução ficou ótima&#8221;, é atribuir mais a este funcionário. Exigir mais dele. </p>
<p>O dinheiro virá, tem que vir. Se a empresa fizer o reconhecimento &#8220;motivacional&#8221; e com &#8220;mais trabalho&#8221;, porém não aumentar os ganhos, então este funcionário deve trocar de trabalho. Tão simples quanto isso.<br />
Não fique em um lugar onde seus esforços não são reconhecidos. Entretanto, tenha certeza de que vc está se esforçando, e merece realmente o que acha que merece.</p>
<p>Estou feliz onde estou. Porém aprendi que <strong>nunca</strong> devo ficar satisfeito com o que eu faço, e com o que eu ganho. Quero fazer melhor, e quero ganhar mais. Sempre. </p>
<blockquote style="font-size: 18px"><p>E para você ? o que é crescer profissionalmente ?</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://wbruno.com.br/2011/12/14/afinal-oque-e-crescer-profissionalmente/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
	</channel>
</rss>

