ID do artigo: 294870 - Última revisão: quinta-feira, 11 de maio de 2006 - Revisão: 3.0

Erro: Usando NewWindow ou NewWindow2 para navegar sempre na mesma janela Falha em algumas instâncias

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 você hospedar o controle WebBrowser, convém navegação sempre ocorrem na mesma janela. Nesse caso, você pode processar a notificação NewWindow ou NewWindow2 para cancelar a navegação. No entanto, os eventos NewWindow e NewWindow2 não sempre funcionam conforme o esperado.

Sintomas no Internet Explorer 5.5

Quando você usa o evento NewWindow no Internet Explorer 5.5, você pode encontrar os seguintes problemas:
  • Se você clicar em um link que executa um método window.open para procurar um novo site, você pode navegar com êxito para a hora do primeiro site; no entanto, ele falhará na segunda vez.
  • Se você clique com o botão direito do mouse em um link e, em seguida, clique em Abrir em nova janela , ele funciona na primeira vez mas não funciona em tentativas subseqüentes.
Quando você usa o evento NewWindow2 no Internet Explorer 5.5, você pode encontrar os seguintes problemas:
  • Se você clicar em um link que executa um método window.open para procurar um novo site, você receberá uma mensagem de erro "Erro não especificado".
  • Se você clique com o botão direito do mouse em um link e, em seguida, clique em Abrir em nova janela , ele não navegue.

Sintomas no Internet Explorer 5

NewWindow funciona como esperado no Internet Explorer 5, quando você clica um link que executa um método window.open para procurar um novo site, ou quando você clique com o botão direito do mouse em um link e, em seguida, clique em Abrir em nova janela .

No entanto, quando você usa NewWindow2 no Internet Explorer 5, você pode encontrar os seguintes problemas:
  • Se você clicar em um link que executa um método window.open para procurar um novo site, ele não navegue.
  • Se você clique com o botão direito do mouse em um link e clique em Abrir em nova janela , você receberá uma mensagem de erro "Erro não especificado".

Sintomas no Internet Explorer 4.x

NewWindow funciona conforme o esperado no Internet Explorer 4. x quando você clica em um link que executa um método window.open para procurar um novo site, ou quando você clique com o botão direito do mouse em um link e clique em Abrir em nova janela .

No entanto, quando você usar NewWindow2 no Internet Explorer 4. x , você pode encontrar os seguintes problemas:
  • Se clicar em um link que executa um método window.open para procurar um novo site, ele não navegue.
  • Se você clique com o botão direito do mouse em um link e clique em Abrir em nova janela , você receberá uma mensagem de erro "Erro não especificado".

Resolução

Para contornar esse problema, abra o link em uma nova janela dentro de seu aplicativo em vez de abri-lo na mesma janela. Para obter informações adicionais, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
184876  (http://support.microsoft.com/kb/184876/EN-US/ ) COMO: Usar o evento de NewWindow2 controle WebBrowser
Observe que o evento NewWindow funciona no Internet Explorer 4. x e o Internet Explorer 5. Portanto, se você tiver apenas oferecer suporte a essas versões do navegador, você pode usar o evento NewWindow .

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

Se você tiver um aplicativo MFC (Microsoft Foundation Classes) e usar NewWindow para navegar na mesma janela, o código a seguir falhará no Internet Explorer 5.5:
void CDWebBrowserEvents::OnNewWindow(BSTR URL, long Flags, BSTR TargetFrameName, 
				 VARIANT* PostData, BSTR Headers, BOOL FAR* Processed)
{
	if (m_Browser) {
	    COleVariant varEmpty;
	    *Processed = TRUE;
	    m_Browser->Navigate((LPCSTR)URL, &varEmpty, &varEmpty, &varEmpty, &varEmpty);
	}
}

				
se você usar NewWindow2 , o código a seguir falha em todas as versões do Internet Explorer:
void CIEDlg::OnNewWindow2(LPDISPATCH FAR* ppDisp, BOOL FAR* Cancel) 
{

	IUnknown* pUnk = m_Browser.GetControlUnknown();
	if (pUnk)
	{
		IDispatch* pDisp = NULL;
		HRESULT hr = pUnk->QueryInterface(IID_IDispatch, (void**)&pDisp);

		if (SUCCEEDED(hr) && pDisp)
			*ppDisp = pDisp;
	}
}
				

Referências

Para obter informações adicionais, clique nos números abaixo para ler os artigos na Base de dados de Conhecimento da Microsoft:
185538  (http://support.microsoft.com/kb/185538/EN-US/ ) COMO: Fazer a navegação ocorrer na mesma janela do WebBrowser
184876  (http://support.microsoft.com/kb/184876/EN-US/ ) COMO: Usar o evento de NewWindow2 controle WebBrowser
194242  (http://support.microsoft.com/kb/194242/EN-US/ ) CORRECÇÃO: window.open causa espera no evento NewWindow
Para obter mais informações sobre a reutilização de tecnologia de navegador, consulte o seguinte site:
http://msdn.microsoft.com/library/default.asp?url=/workshop/browser/overview/Overview.asp (http://msdn.microsoft.com/library/default.asp?url=/workshop/browser/overview/Overview.asp)
Para obter mais informações sobre como desenvolver soluções baseadas na Web para o Microsoft Internet Explorer, visite os seguintes sites:
http://msdn.microsoft.com/ie/ (http://msdn.microsoft.com/ie/)

http://support.microsoft.com/iep (http://support.microsoft.com/iep)

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 (Programming) 5.01 SP1
  • Microsoft Internet Explorer 5.5
Palavras-chave: 
kbmt kbbug kbnofix kbwebbrowser KB294870 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: 294870  (http://support.microsoft.com/kb/294870/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.