ID do artigo: 259935 - Última revisão: segunda-feira, 12 de maio de 2003 - Revisão: 2.0

Erro: DocumentComplete não disparado quando WebBrowser não está visível

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.

Nesta página

Expandir tudo | Recolher tudo

Sintomas

Quando sua propriedade visível é definida como "False", o controle WebBrowser (Shdocvw.dll) não aciona o evento DocumentComplete e um documento não alcançar o estado READYSTATE_COMPLETE.

Resolução

É a melhor solução para aplicativos que dependem de um controle WebBrowser oculto para você posicionar o controle para que ele desenha sua interface do usuário desativar sua janela do recipiente. Para fazer isso, defina a propriedade esquerda do controle igual a negativo de sua propriedade largura . Em cenários multimonitor, valores negativos podem ser coordenadas de tela válido, para que o valor da propriedade esquerda deve ser definido como coordenadas que estão fora os valores retornados chamando o método EnumDisplayMonitors().

Como alternativa, se a interface do usuário WebBrowser não for necessário, poderá fornecer as APIs de WinInet muita a mesma funcionalidade.

Situação

A Microsoft confirmou que esse é um problema nos produtos da Microsoft listados no começo deste artigo.

Mais Informações

Etapas para reproduzir o problema

  1. Inicie um novo projeto Standard EXE no Visual Basic. O Form1 é criado por padrão.
  2. Adicione o Microsoft Internet Controls (Shdocvw.dll) para o projeto. Portanto, a partir do menu Project , clique em componentes .
  3. Adicione os seguintes controles para Form1:
       Object                     Name                  Caption
       -------------------------------------------------------------------
    
       WebBrowser                 WebBrowser1            
       CheckBox                   chkVisible            Visible (value of 1 - checked)
       CommandButton              cmdNavigate           Navigate
       CommandButton              cmdReadyState         ReadyState
    
     
    					
  4. Copie o código a seguir na janela de código do Form1:
       Private Sub cmdNavigate_Click()
          WebBrowser1.Navigate2 "http://msdn.microsoft.com/workshop"
       End Sub
    
       Private Sub cmdReadyState_Click()
          MsgBox WebBrowser1.Document.ReadyState
       End Sub
    
       Private Sub chkVisible_Click()
          WebBrowser1.Visible = chkVisible.Value
       End Sub
    
       Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object,
                                                URL As Variant)
          MsgBox "DocumentComplete!"
       End Sub
    
       Private Sub WebBrowser1_NavigateComplete2(ByVal pDisp As Object,
                                                 URL As Variant)
          MsgBox "NavigateComplete2!"
       End Sub
    					
  5. No menu ' Executar ', clique em Iniciar ou pressione a tecla F5 para iniciar o programa.
  6. Clique no botão navegar . Observe que ambos os NavigateComplete2 DocumentComplete eventos e são acionados.
  7. Desmarque a caixa de seleção Visible para ocultar o controle WebBrowser. Clique no botão navegar novamente. Observe que somente o evento NavigateComplete2 é acionado. Usando o botão ReadyState , verifique se ReadyState do controle não tiver atingido READYSTATE_COMPLETE (4).

    Quando você clicar novamente em navegar , ocorre o mesmo comportamento. O evento DocumentComplete só é acionado quando a caixa de seleção visível é selecionada, tornando o controle WebBrowser visível novamente. Você pode corrigir o comportamento, substituindo o manipulador chkVisible_Click com o seguinte código:
       Private Sub chkVisible_Click()
           If chkVisible.Value Then
               WebBrowser1.Left = 120 ' or whatever the normal Left value is
           Else
               WebBrowser1.Left = -WebBrowser1.Width
           End If
       End Sub
    					

Referências

Para obter informações adicionais, consulte os seguintes sites MSDN Web Workshop:

Evento DocumentComplete
http://msdn.microsoft.com/workshop/browser/webbrowser/reference/events/DocumentComplete.asp (http://msdn.microsoft.com/workshop/browser/webbrowser/reference/events/DocumentComplete.asp)

Referência de funções do Microsoft Win32 Internet
http://msdn.microsoft.com/workshop/networking/wininet/reference/reference.asp (http://msdn.microsoft.com/workshop/networking/wininet/reference/reference.asp)

A informação contida neste artigo aplica-se a:
  • Microsoft Internet Explorer 4.0 Edição de 128 Bits
  • Microsoft Internet Explorer 4.01 Service Pack 2
  • Microsoft Internet Explorer 4.01 Service Pack 1
  • Microsoft Internet Explorer 4.01 Service Pack 2
  • Microsoft Internet Explorer 5.0
  • Microsoft Internet Explorer 5.01
  • Microsoft Internet Explorer 5.5
Palavras-chave: 
kbmt kbbug kbwebbrowser KB259935 KbMtpt
Tradução automáticaTradução automática
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: 259935  (http://support.microsoft.com/kb/259935/en-us/ )
Retired KB ArticleAviso 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.