Você está offline; aguardando reconexão

Erro: propriedade window.closed retorna valores incorretos

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 traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 241109
Aviso de Isenção de Responsabilidade sobre Conteúdo do KB Aposentado
Este artigo trata de produtos para os quais a Microsoft não mais oferece suporte. Por esta razão, este artigo é oferecido "como está" e não será mais atualizado.
Sintomas
A propriedade window.closed é usada quando uma janela pai abre uma janela filho usando uma chamada window.open e o pai ou filho precisa saber quando a janela filho ou pai, respectivamente, foi fechada.

A propriedade opener refere-se para a janela aberta atual (usando a chamada do método window.open ). Quando a janela filho verifica a propriedade opener.closed , é false quando o pai é aberto e true caso contrário, isto é, o valor retornado é invertido.

Quando o pai verifica o status da janela filho usando propriedade fechada da janela filho, os mesmos resultados incorretos são retornados.
Resolução
A solução alternativa para o filho é ter o pai definir uma variável na janela filho que mantém o status correto da janela pai. O filho, em seguida, usa essa variável em vez da propriedade opener.closed .

A solução alternativa para o pai é negar propriedade fechada da janela filho. Ele é mais seguro e recomendado para usar a mesma lógica como para a janela filho para garantir que a lógica não quebrar quando esse comportamento é corrigido em uma versão posterior do Internet Explorer

O código HTML a seguir demonstra o bug e também como solucionar o problema.
  1. Salve o arquivo 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. Salve o arquivo 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 até Parent.htm e clique no botão Abrir filho para abrir a janela filho.
  4. Clique nos botões É filho abrir antes e depois fechar a janela filho para reproduzir o bug e testar a correção. Como alternativa, clique nos botões É pai abrir antes e depois fechar a janela pai para teste.
Situação
A Microsoft confirmou que esse é um problema nos produtos da Microsoft listados na seçã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 sites:(c) 1999 Microsoft Corporation, todos os direitos reservados. Contribuições de Kusuma Vellanki, Microsoft Corporation.

janela abridor fechado

Propriedades

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

Microsoft Internet Explorer 4.0 Edição de 128 Bits, 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
dy>