Pergunta

Eu tenho um aplicativo WPF simples com um controle WebBrowser. Quando dirijo o controle para carregar uma página, gostaria de ter o controle, informe ao servidor, ele está tentando carregar a página, é um dispositivo móvel e, portanto, carregar a versão menor da página. Eu sei que muitos sites adicionam celular antes do endereço, então a página móvel do Google.com é apenas móvel.google.com, mas estou me perguntando se existe uma maneira de carregar o servidor da web direcionar automaticamente meu controle de webbrowser para A versão móvel do site? Sinto que deveria haver uma maneira muito simples de fazer isso, mas não consigo descobrir :).

Desde já, obrigado!!!

Foi útil?

Solução

Isso geralmente será controlado pelo site usando o Agente de usuário, o que não é algo que você pode alterar com o controle padrão do WebBrowser. Existe um controle alternativo do WPF Webbrowser, com base em Cromo, da qual você pode baixar Codeplex. Pode não suportar o agente do usuário falsificando para fora da caixa, mas é de código aberto para que você possa alterá -lo manualmente no código para um iPhone, Windows Mobile etc.

Outras dicas

Na verdade, o WebBrowser suporta a alteração do agente do usuário por meio de cabeçalhos no método Navigate:

this.yourWebBrowserControl.Navigate( new Uri( "http://www.yoursite.com" ), string.Empty, null, string.Format( "User-Agent: {0}", "Your user agent string here" ) );

Eu sei que isso é velho, mas isso é uma coisa fácil de fazer:

Primeiro, você precisa da sequência do agente do usuário e ela precisa ser formatada. É assim que eu faço abaixo do WBMobile é um controle WebBrowser. Este exemplo o levará ao site do Bing Mobile

wbMobile.Navigate(new Uri("http://m.bing.com/", UriKind.RelativeOrAbsolute), string.Empty, null, string.Format("User-Agent: {0}", "Opera/9.80 (J2ME/MIDP; Opera Mini/9 (Compatible; MSIE:9.0; iPhone; BlackBerry9700; AppleWebKit/24.746; U; en) Presto/2.5.25 Version/10.54"));

Isso navegará até a página da web usando uma string de agente de usuário móvel e permitirá que você visualize sites móveis em tempo real no Webbrowser Control

A solução de Boydski não era a certa para mim. Melhor solução para este caso:

Alterando o agente do usuário do controle WebBrowser

Mas, em algum momento, o "Navigator.UserAgent" não está definido com a solução de cabeçalho. Nesse caso, você tem que usar UrlmksessSessionOption. Msdn

// import .. use a internal static class like "Native" ;)
[DllImport("urlmon.dll", CharSet = CharSet.Ansi)]
internal static extern int UrlMkSetSessionOption(int dwOption, string pBuffer, int dwBufferLength, int dwReserved);

// usage
string userAgent = "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us)";

UrlMkSetSessionOption(0x10000002, null, 0, 0);

UrlMkSetSessionOption(0x10000001, userAgent, userAgent.Length, 0);

Strings de agente de usuário adequados que você pode encontrar aqui

Divirta-se!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top