Screencaster Mostrando Conhecimento

jQuery - Estendendo o jQuery

De forma muito simples vou mostrar a vocês como fazer links externos abrirem em nova janela com jQuery, e também como estender a biblioteca para evitar repetições.

Primeiramente, para abrir links externos automaticamente em novas janelas, dispensando o atributo target, e de forma não-obstrutiva, uma boa maneira seria da seguinte forma:

$(function(){
    $("a[href^=http://]").click(function(){
        window.open($(this).attr("href"))
        return false
    })
})

Desta forma, todos os links cujo href inicie com http:// (”a[href^=http://]”) irão abrir o respectivo endereço em nova janela.

Agora vamos supor que queremos utilizar este comportamento em vários sites que mantemos e utilizamos jQuery. Não seria muito interessante digitar a função toda vez, afinal é uma repetição desnecessária. Para solucionar isso, podemos estender o jQuery, colocando essa função inclusive em outro arquivo, que podemos incluir nos sites em que quisermos:

1
2
3
4
5
6
7
$.fn.opensNewWindow = function()
{
	this.click(function(){
		window.open($(this).attr("href"))
		return false
	})
}

Agora sempre que quisermos fazer um link abrir em nova janela, basta utilizarmos nossa função:

1
2
3
$(function(){
	$("a[href^=http://]").opensNewWindow();
})

Nós temos aqui na interAtiva! diversos arquivos com “coleções” de extensões e códigos que usamos com frequência em vários projetos. Para dar mais um exemplo, uma página que usa jQuery para enviar todos os dados de um form via AJAX seria mais ou menos assim:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
	"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
	<meta http-equiv="Content-type" content="text/html; charset=utf-8">
	<title>Estendendo o jQuery</title>
	<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js" type="text/javascript"></script>
	<script type="text/javascript">
		$(function(){
			$("#myform").submit(function(){
				$.post($(this).attr("action"), $(this).serialize(), tratarRetorno)
				return false
			})
 
			tratarRetorno = function(responseText)
			{
				alert(responseText)
			}
		})
	</script>
</head>
<body id="index">
 
	<form action="?" id="myform" method="post">
		<fieldset>
			Nome:
			<input type="text" name="nome" value="" id="nome"><br>
			Email:
			<input type="text" name="email" value="" id="email"><br>
			<button type="submit">Ok</button>
		</fieldset>
	</form>
 
</body>
</html>

E caso quiséssemos utilizar este mesmo comportamento em outros sites e evitar repetições, poderíamos apenas estender o jQuery:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
tratarRetorno = function(responseText)
{
	alert(responseText)
}
 
$.fn.sendViaAJAX = function(callback)
{
	this.submit(function(){
		$.post($(this).attr("action"), $(this).serialize(), callback)
		return false
	})
}
 
$(function(){
	$("#myform").sendViaAJAX(tratarRetorno)
})

Como podem ver, jQuery é uma mão-na-roda na hora de seguir um dos meus favoritos princípios da programação: DON’T REPEAT YOURSELF / NÃO SE REPITA

Até mais!

Postado em: 17/11/2008 @ 12:11 por Guilherme Rambo. Você pode comentar ou enviar um trackback para este post.
Apenas um comentário

jQuery - Navegação AJAX mamão-com-açúcar

Seguindo nossa pseudo-série “Como eu gosto de jQuery: é tão simples fazer as coisas com ele!”, segue um código bem simples para fazer uma navegação AJAX, mas antes, caso você queira, veja o exemplo funcionando.

Você também pode baixar os códigos: navegacao_ajax.zip

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
	"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
	<meta http-equiv="Content-type" content="text/html; charset=utf-8">
	<title>Navegação AJAX mamão-com-açúcar</title>
	<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js" type="text/javascript"></script>
	<script type="text/javascript">
		var home = "home.html"
 
		$(function(){
			navegar(home)
			atribuir()
		})
 
		atribuir = function()
		{
			$("ul#menu li a").click(function(){
				navegar($(this).attr("href"))
 
				return false
			})
		}
 
		navegar = function(pagina)
		{
			$("#conteudo").load(pagina)			
		}
	</script>
</head>
<body id="index">
 
	<div id="geral">
 
		<div id="topo">
 
			<h1>Navegação AJAX mamão-com-açúcar</h1>
 
			<ul id="menu">
				<li><a href="home.html" class="home">home</a></li>
				<li><a href="sobre.html" class="sobre">sobre</a></li>
				<li><a href="contato.html" class="contato">contato</a></li>
			</ul>
 
		</div>
 
		<div id="conteudo">
 
		</div>
 
	</div>
 
</body>
</html>

Como podem ver, com pouco código nós conseguimos fazer uma navegação totalmente funcional. Claro que dá para incrementar muito mais, mas o básico está aí!

Até mais!

Postado em: 14/11/2008 @ 12:11 por Guilherme Rambo. Você pode comentar ou enviar um trackback para este post.
6 comentários

jQuery - Menu em abas mamão-com-açúcar

Como eu gosto de jQuery: é tão simples fazer as coisas com ele! Segue então um código prontinho pra quem deseja montar um menu em abas, o código está o mais simples possível, e claro que está desta forma para ser postado no blog, para usar num site seria legal tornar este javascript não-obstrutivo e remover algumas repetições no código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
	"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
	<meta http-equiv="Content-type" content="text/html; charset=utf-8">
	<title>Menu em abas simples</title>
	<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js" type="text/javascript"></script>
	<script type="text/javascript">
		var tabAtual = 1
 
		mudarTab = function(numeroTab) {
			$("#tab_"+tabAtual).toggle()
			$("#tab_"+numeroTab).toggle()
			tabAtual = numeroTab
		}
	</script>
</head>
<body id="index">
 
	<div id="tabs">
 
		<a href="#tab_1" onclick="mudarTab(1)">Tab 1</a>
		<a href="#tab_2" onclick="mudarTab(2)">Tab 2</a>
		<a href="#tab_3" onclick="mudarTab(3)">Tab 3</a>
		<a href="#tab_4" onclick="mudarTab(4)">Tab 4</a>
 
		<div id="tab_1">conteudo tab 1</div>
		<div id="tab_2" style="display:none">conteudo tab 2</div>
 
		<div id="tab_3" style="display:none">conteudo tab 3</div>
		<div id="tab_4" style="display:none">conteudo tab 4</div>
	</div>
 
</body>
</html>

É só isso, basta rodar que o código já funciona. Com um pouco de CSS e outras personalizações você faz um ótimo menu em abas com pouco código.

Até mais!

Postado em: 13/11/2008 @ 17:11 por Guilherme Rambo. Você pode comentar ou enviar um trackback para este post.
4 comentários

Criando janela modal (estilo lightbox) com Javascript e jQuery

Imagem ilustrativa

Seguindo nossa série de vídeos sobre jQuery, neste vídeo eu mostro como criar uma janela modal (semelhante à lightbox), usando javascript e jQuery. O vídeo está um pouco mais longo que os outros, mas muito interessante.

icon for podpress  Podcast Video [12:15m]: Download (125)

Lembrando que falta pouco tempo para encerrarem as votações do Prêmio Podcast 2008, vote no Screencaster clicando no banner abaixo:

Prêmio Podcast  2008

Segue o código da função que eu precisei utilizar no vídeo para pegar as dimensões da página:

// getPageSize()
// Returns array with page width, height and window width, height
// Core code from - quirksmode.org
// Edit for Firefox by pHaez
//
function getPageSize(){

var xScroll, yScroll;

if (window.innerHeight && window.scrollMaxY) {
xScroll = document.body.scrollWidth;
yScroll = window.innerHeight + window.scrollMaxY;
} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
xScroll = document.body.scrollWidth;
yScroll = document.body.scrollHeight;
} else { // Explorer Mac…would also work in Explorer 6 Strict, Mozilla and Safari
xScroll = document.body.offsetWidth;
yScroll = document.body.offsetHeight;
}

var windowWidth, windowHeight;
if (self.innerHeight) { // all except Explorer
windowWidth = self.innerWidth;
windowHeight = self.innerHeight;
} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
windowWidth = document.documentElement.clientWidth;
windowHeight = document.documentElement.clientHeight;
} else if (document.body) { // other Explorers
windowWidth = document.body.clientWidth;
windowHeight = document.body.clientHeight;
}

// for small pages with total height less then height of the viewport
if(yScroll < windowHeight){
pageHeight = windowHeight;
} else {
pageHeight = yScroll;
}

// for small pages with total width less then width of the viewport
if(xScroll < windowWidth){
pageWidth = windowWidth;
} else {
pageWidth = xScroll;
}

arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight)

return arrayPageSize;
}

Espero que gostem, até mais!

Postado em: 22/10/2008 @ 12:10 por Guilherme Rambo. Você pode comentar ou enviar um trackback para este post.
Tem alguma dúvida? Comente!

Filtrando dados digitados em campo text com Javascript e jQuery

Imagem ilustrativa

Seguindo nossos vídeos sobre jQuery, hoje posto aqui um vídeo onde mostro como criar um campo de texto que aceite apenas números e barras, ou seja, como filtrar dados digitados num campo de texto, de forma bem simples, através de expressões regulares.

icon for podpress  Podcast Video [5:41m]: Download (55)

Espero que gostem.

Não se esqueçam de votar no Screencaster para o Prêmio Podcast 2008, falta pouco tempo para o término das votações, caso goste dos nossos vídeos e áudios, clique no botão abaixo para votar.

Prêmio Podcast  2008

Vote também no nosso parceiro Aperte F5, entrando no site deles e clicando no banner do Prêmio Podcast 2008.

[]’s

Postado em: 21/10/2008 @ 15:10 por Guilherme Rambo. Você pode comentar ou enviar um trackback para este post.
Apenas um comentário

Criando um slideshow de imagens com Javascript e jQuery

Imagem ilustrativa

Seguindo alguns vídeos sobre jQuery que estou fazendo, resolvi fazer um vídeo de como criar um slideshow de fotos utilizando javascript e jQuery. Como vocês verão no vídeo, com as facilidades do jQuery isto fica muito fácil.

icon for podpress  Podcast Video [11:48m]: Download (94)

Não deixem de votar no Screencaster para o Prêmio Podcast 2008, clicando no banner abaixo.

Prêmio Podcast  2008

Vote também no nosso parceiro Aperte F5

Na última semana não tivemos nosso podcast semanal, mas prometemos que esta semana estaremos de volta :D

Postado em: 20/10/2008 @ 15:10 por Guilherme Rambo. Você pode comentar ou enviar um trackback para este post.
3 comentários

Navegação assíncrona simples com JSON

Imagem ilustrativa

Este screencast serve como uma introdução à linguagem de marcação de dados JSON, que pode ser muito útil como resposta para requisições ajax assíncronas, permitindo que se atualize facilmente vários pontos de uma mesma página com poucas linhas de código.

icon for podpress  Vídeo .MOV (1280x800 pixels) [10:32m]: Download (230)

Desculpem pela minha voz no screencast, mas é que eu estou um pouco gripado e tinha acabado de acordar.

Se gostarem comentem, que pretendo postar mais coisas usando JSON em breve…

Postado em: 01/08/2008 @ 16:08 por Guilherme Rambo. Você pode comentar ou enviar um trackback para este post.
2 comentários