Artigo: 259935 - Última revisão: segunda-feira, 12 de Maio de 2003 - Revisão: 2.0

Erro: O DocumentComplete não despoletado 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 | Reduzir tudo

Sintomas

Quando a propriedade visível estiver definida como "False", o controlo WebBrowser (Shdocvw.dll) não é despoletado evento DocumentComplete e um documento não alcança READYSTATE_COMPLETE estado.

Resolução

A melhor solução para as aplicações que dependem de um controlo WebBrowser oculto é para si posicionar o controlo de modo a que desenha sua interface de utilizador desactivar a janela de contentor. Para o fazer, defina a propriedade para a esquerda do controlo igual a negativo da respectiva propriedade largura . Cenários multimonitor, valores negativos podem ser coordenadas de ecrã válido, para que o valor de propriedade para a esquerda deve ser definido como coordenadas que se encontram os valores devolvidos chamando o método EnumDisplayMonitors().

Em alternativa, se não for necessária a interface de utilizador do WebBrowser, a API do WinInet pode fornecer-grande parte da mesma funcionalidade.

Ponto Da Situação

A Microsoft confirmou que este erro ocorre nos produtos da Microsoft listados no início deste artigo.

Mais Informação

Passos para reproduzir o comportamento

  1. Inicie um novo projecto EXE padrão no Visual Basic. É criado o Form1 por predefinição.
  2. Adicione os controlos de Internet da Microsoft (Shdocvw.dll) ao projecto. Assim, no menu Project , clique em componentes .
  3. Adicione os seguintes controlos ao Form1:
       Object                     Name                  Caption
       -------------------------------------------------------------------
    
       WebBrowser                 WebBrowser1            
       CheckBox                   chkVisible            Visible (value of 1 - checked)
       CommandButton              cmdNavigate           Navigate
       CommandButton              cmdReadyState         ReadyState
    
     
    					
  4. Copie o código seguinte para a janela Code 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. Menu ' Executar ', clique em Iniciar ou prima a tecla F5 para iniciar o programa.
  6. Clique no botão ' navegar '. Repare que as NavigateComplete2 e DocumentComplete eventos são accionados.
  7. Desmarque a caixa de verificação visível para ocultar o controlo WebBrowser. Clique no botão de navegar novamente. Repare que apenas o evento NavigateComplete2 for accionado. Quando utilizar o botão ReadyState , verificar que ReadyState o controlo não atingiu READYSTATE_COMPLETE (4).

    Quando clicar em navegar novamente, ocorre o mesmo comportamento. O evento DocumentComplete apenas é desencadeado quando a caixa de verificação visível estiver seleccionada, tornando o controlo WebBrowser visíveis novamente. Pode corrigir o comportamento, substituindo a rotina de tratamento de 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 da MSDN Web Workshop:

Eventos 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 128-Bit Edition
  • 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 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: 259935  (http://support.microsoft.com/kb/259935/en-us/ )
Retired KB ArticleExclusã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.