Pesquisar este blog

domingo, 27 de março de 2011

Passando valores de uma janela a outra via Javascript

Recentemente no trabalho me deparei com uma necessidade simples que a tempos não utilizava. Como passar valores de uma janela a outra usando Javascript?
Depois de quebrar a cabeça para lembrar e também pesquisando, resolví postar essa dica para memorizar e também ajudar a todos.


Este recurso é bastante utilizado quando se deseja pesquisar um determinado item em uma tabela e passar o código para um <input> do <form> que está em outra janela.


formprincipal.html
<html>
<head>

<script>
function abrirPesquisa()
{
   window.open("pesquisa.html"); // Abrira a janela de pesquisa
}   
</script>

</head>
<body>
<form>
Digite um codigo: 

Descrição: <label name="descrproduto" id="descrproduto">
<p align="center"><a href="javascript:abrirPesquisa()";>Pesquisar</a></p>

</form>

</body>
</html>


pesquisa.html
<html>
<head>
<script>
function levarcodigo( codigo,descricao )
{
   /** O "segredo" está aqui nessas duas linhas, onde é passado o codigo para o <input>
   *    e a descricao para o <label>
   */
   top.opener.document.getElementById("campo1").value = codigo;
   top.opener.document.getElementById("descrproduto").innerHTML = descricao;
   window.close();
}
</script>
</head>
<body>
<a href="javascript:levarcodigo(1010,'Cafeteira');">1010-Cafeteira</a>
<a href="javascript:levarcodigo(1020,'Jogo de panelas');">1020-Jogo de panelas</a>
<a href="javascript:levarcodigo(1030,'Jogo de taças');">1030-Jogo de taças</a>
<a href="javascript:levarcodigo(1040,'Churrasqueira');">1040-Churrasqueira</a>
</body>
</html>

Um exemplo bem simples, porém funcional. Importante ressaltar que para funcionar é necessário que as duas páginas(.html) estejam no mesmo domínio.

"Vida longa e próspera ao Javascript".

6 comentários:

  1. Perfeito!

    Parabéns amigo. Isso foi exatamente o que eu precisava no meu projeto. Não sabia que dava pra passar valores entre janelas diferentes.

    Só tem um errinho:

    o window.close precisa de perênteses, pelo menos nos navegadores que eu testei:

    window.close()

    ResponderExcluir
  2. Ótimo! Me ajudou muito!

    ResponderExcluir
  3. obrigado amigo estava mesmo precisando de algo assim

    ResponderExcluir

Todo comentário é bem-vindo, seja crítica ou elogio. O importante é sua manifestação. Só peço que se identifique para que posteriormente se for o caso eu entrar em contato.