Como ter o C# WPF Webbrowser Control Carregar versão móvel de sites
-
20-09-2019 - |
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!!!
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!