Dica: Passando valores de uma popup para uma página em outra janela via JavaScript


É comum termos a situação de retornar um valor selecionado em uma janela popup para a página que abriu esta popup. Isso só é possível através de JavaScript, pois são eventos que ocorrem no lado cliente. Para conseguir isso, você poderia utilizar o seguinte bloco de código JavaScript na sua popup:

<script language="javascript">
function selecionaValor(valor)
{
  window.opener.document.forms[0].NOME_CONTROLE.value = valor;
  window.close();
}
</script>


onde:
window.opener é uma referência à janela que abriu a popup;
document.forms[0] é uma referência ao formulário (neste caso, o primeiro, cujo índice é 0) da janela que abriu a popup;
NOME_CONTROLE é o nome do controle HTML do formulário da janela que abriu a popup, para o qual você vai passar o valor selecionado;
valor é o novo valor que será atribuído ao controle da página que abriu a popup;
 
E para chamar a função:
 

<a href="javascript:selecionaValor('novo valor');">seu link</a>

Obs: a palavra "java script" acima deve ser escrita sem espaços; o theSpoke está bloqueando este tipo de escrita, provavelmente por questões de segurança, o que me obrigou a escrevê-la com um espaço em branco no meio. É por essas e outra que tem tanta gente abandonando o theSpoke...

Ricardo Oneda

Comments (2) -

  • Juliano Nunes

    10/30/2005 4:33:34 PM | Reply

    Se você utilizar aquele esquema de passar os valores através do HttpContext acho que também funcionaria, seguindo aquele artigo do Israel Aéce. Mas dá bem mais trabalho. Depende do que a pessoa quer fazer pra compensar fazer do outro modo.

  • Ricardo Oneda

    10/30/2005 10:59:56 PM | Reply

    Juliano, o HttpContext funciona bem quando temos navegação entre páginas feitas no servidor - por exemplo, através do Server.Transfer(). O exemplo que dei é para casos em que temos duas páginas abertas simultaneamente, cada uma em janelas de browsers distintas, algo como ter um link em uma página que abre uma popup para seleção de algum item. Como os eventos ocorrem no cliente (abertura de uma nova janela, clique em um dos itens e fechamento da janela), utiliza-se javascript para recuperar os valores e passar para a outra janela.

Loading