Erro: à propriedade window.closed devolve valores incorrectos

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática… erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 241109
Exclusão de Responsabilidade para Conteúdo sem Suporte na KB
Este artigo foi escrito sobre produtos para os quais a Microsoft já não fornece suporte. Por conseguinte, este artigo é oferecido "tal como está" e deixará de ser actualizado.
Sintomas
à propriedade window.closed é utilizada quando uma janela principal abre uma janela subordinada utilizando uma chamada window.open e principal ou subordinado necessita de saber quando a janela subordinado ou ascendente, respectivamente, ter sido fechada.

A propriedade de utilizador refere-se para a janela aberta actual (utilizando a chamada ao método window.open ). Quando a janela descendente verifica a propriedade opener.closed , é false quando o principal é aberto e true caso contrário; ou seja, o valor devolvido é invertido.

Quando o principal verifica o estado da janela descendente utilizando propriedade fechado a janela descendente, são devolvidos os mesmos resultados incorrectos.
Resolução
A solução do subordinado é o principal definir uma variável na janela subordinado que mantém o estado correcto da janela principal. A criança utiliza, em seguida, esta variável em vez da propriedade opener.closed .

A solução para o ascendente é negar propriedade fechada a janela descendente. É mais seguro e recomendado para utilizar a mesma lógica como para a janela descendente para garantir que a lógica não divide quando este comportamento foi corrigido numa versão posterior do Internet Explorer

O código HTML a seguir demonstra o erro e também como contornar o problema.
  1. Guarde o ficheiro seguinte como Parent.htm:
    <html><head><script>var childWin;var childOpen = false;</script></head><body BGCOLOR="white"><input type="button" value="Open Child" id="button1" name="button1" onclick="OpenChild()" ><p><input type="button" value="Is Child Open(Bug)?" id="button2" name="button2" onclick="alert(childWin.closed)"><p><input type="button" value="Is Child Open(Fix)?" id="button3" name="button3" onclick="alert(childOpen)"><script>function OpenChild(){	childWin = window.open ("Child.htm")	childOpen = true;}function UpdateChild(){	//Only if child window is still open, set the parentOpen property	if (childOpen == true)	{		childWin.parentOpen = false	}}window.onunload = UpdateChild;</script></body></html>					
  2. Guarde o ficheiro seguinte como Child.htm:
    <html><head><script>var parentOpen = true</script></head><body BGCOLOR="white"><input type="button" value="Is Parent Open(Bug)?" id="button1" name="button1" onclick="alert(window.opener.closed)"><input type="button" value="Is Parent Open?" id="button2" name="button2" onclick="alert(parentOpen)"><script>window.onunload = UpdateParent;function UpdateParent(){	//Only if the parent is open, update the status of the child window	if (parentOpen)	{		window.opener.childOpen = false;	}}</script></body></html>					
  3. Navegue para Parent.htm e clique no botão Abrir subordinado para abrir a janela descendente.
  4. Clique nos botões É subordinado abrir antes e depois de fechar a janela descendente para reproduzir o erro e testar a correcção. Em alternativa, clique nos botões É principal abrir antes e depois de fechar a janela principal para testar.
Ponto Da Situação
A Microsoft confirmou que este erro ocorre nos produtos do Microsoft listados na secção "Aplica-se a".
Referências
Para obter mais informações sobre como desenvolver soluções baseadas na Web para o Microsoft Internet Explorer, visite os seguintes Web sites da Microsoft:(c) 1999 Microsoft Corporation, todos os direitos reservados. Contribuições de Kusuma Vellanki, Microsoft Corporation.

janela utilizador fechado

Aviso: Este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 241109 - Última Revisão: 05/11/2006 11:56:20 - Revisão: 3.0

Microsoft Internet Explorer 4.0 128-Bit Edition, Microsoft Internet Explorer 4.01 Service Pack 2, Microsoft Internet Explorer 5.0, Microsoft Internet Explorer (Programming) 6.0

  • kbmt kbbug kbdhtml kbdocfix kbfaq kbpending KB241109 KbMtpt
Comentários