JavaScript - Não permitir sair da Janela sem fechá-la

Estou com um pequeno problema e vou usar um exemplo pra facilitar a explicação:

  • tenho um cadastro [01.jsp], e nele tenho um campo “cliente” para o usuário digitar qual o nro do cliente. Se o usuário não souber qual o nro do cliente, então existe uma pesquisa de clientes [02.jsp].

  • Quando o usuário clica na pesquisa, uma nova janela é aberta [02.jsp].

  • Antes do usuário voltar ao cadastro ele deve fechar esta janela de pesquisa. Ele deve selecionar qual o cliente para poder voltar, caso contrário, ele não deve ter acesso ao cadastro até que feche a pesquisa [02.jsp].

Este é o meu problema… eu posso utilizar “window.showModalDialog()” para abrir a pesquisa, funciona perfeitamente, porém, só no Internet Explorer, no Netscape isso não está disponível. Na pesquisa eu tentei tb utilizar onBlur=“window.focus();” mas não funciona legal… A solução que eu busco é algo que funcione no Netscape, já que para o internet explorer eu já tenho solução (showModalDialog()).

abraço

aleGiordani

Olá alegiordani, eu faria da seguinte forma:

1° Na mesma função que tu utiliza para gerar essa janela secundaria, tu poderia desabilitar os campos do cadastro.

2° Após realizada a pesquisa e selecionado um registro, tu poderia incluir habilitar novamente os campos da página de cadastro e incluir os valores do registro selecionado, e por fim fecharia a janela.

3° Poderia realizar uma verificação no fechamento da janela no método unload da página indicando que os campos do cadastro ficarão indisponíveis até que um registro seja selecionado.

Espero que tenha ficado claro. 8)

Olá!

Caras, como faço o diálogo entre a janela aberta com a função
“window.showModalDialog()” e a janela que abriu essa?
Dialogo que eu digo é redirecionamento, traca de valores de “input” para “input”… assim como vc citou no seu problema…

Já agradeço de antemão…

Se eu nao me engano vc pode utilizar “window.opener” para referenciar a janela q abriu a 2.jsp …

ARGH!!! IE-only!!! ECA!!!

bbazotti, ao criar uma popup normal, você pode guardar referência à mesma:

var minhaJanelinha = window.open( etc ... );
minhaJanelinha.document.etc

e, se não estou enganado, a propriedade “parent” de desntro do popup aponta para a página que a abriu.

Lipe, valeu pela dica… mas não consegui… e não é sintaxe… tentei de diversas formas… mas não me deixa retornar o valor de um input para a janela principal…

Tah bao…
Entao lavai…

Veja um exemplo do uso de window.opener, que mencionei anteriormente…

//Pagina 1.html

<html>
<form name="frmMain">
<input type="text" name="txt1">
<br>
<input type="text" name="txt2">

<a href="javascript:abreJanela();">Pesquisar</a>
</form>
</html>
<script language="javascript">
function abreJanela(){
    window.open('2.html');
}
</script>

Como pode ver a ‘razão de viver’ da pagina 1.html eh apenas abrir uma pagina chamada 2.html…

Bem, na 2.html temos…

//2.html

<html>
<body>
<form name="frm">
   <input name="hd1" value="Valor Hd1" type="hidden">
   <input name="hd2" value="Valor Hd2" type="hidden">
</form>
</body>

<script language="javascript">
    window.opener.document.frmMain.txt1.value = document.frm.hd1.value;	
    window.opener.document.frmMain.txt2.value = document.frm.hd2.value;
</script>

</html>

Ela faz uma referencia a 1.html utilizando window.opener, e com esta referencia o limite estah na imaginação do desenvolvedor…
Eu apenas criei dois campinhos hidden com um valor na janela filha e passei o valor pros texts da janela Pai…

Testei esse código no IE e no meu amado Mozilla FireFox…e tudo ok bbazotti…