Frage

Ich habe eine einfache WPF-Anwendung mit einem WebBrowser-Steuerelement. Als ich die Steuerung anweisen, eine Seite zu laden Ich mag die Kontrolle habe den Server anweisen, es versucht, die Seite aus zu laden, dass es ein mobiles Gerät und damit die kleinere Version der Seite laden. Ich kenne eine Menge Websites, kurz vor der Adresse Handy hinzufügen, so google.com mobilen Seite ist nur mobile.google.com, aber ich frage mich, ob es einen Weg gibt, die der Webserver meine Web-Browser eine direkte Steuerung automatisch haben zu laden die mobile Version der Website? Ich fühle mich wie es sollte eine sehr einfache Art und Weise, dies zu tun, aber ich kann es einfach nicht herausfinden.)

Vielen Dank im Voraus !!!

War es hilfreich?

Lösung

Dies wird im Allgemeinen durch die Website gesteuert werden, mit dem User Agenten , das ist nicht etwas, Sie können mit dem Standard WebBrowser-Steuerelement ändern. Es gibt eine Alternative WPF WebBrowser-Steuerelement, basierend auf Chromium , die Sie von CodePlex . Es ist vielleicht nicht unterstützt User Agent der Box Spoofing aus, aber es ist Open Source, so dass Sie manuell im Code auf ein iPhone ändern kann, Windows Mobile etc.

Andere Tipps

Eigentlich ist der Web-Browser unterstützt jedoch den User Agent über Header in der Navigate-Methode zu ändern:

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

Ich weiß, das ist alt, aber das ist eine einfache Sache zu tun:

Zuerst müssen Sie die Zeichenfolge User Agent und es muss String formatiert sein. Dies ist, wie ich es tun unten wbMobile ist eine Web-Browser-Steuerung. In diesem Beispiel werden Sie auf die mobile bing Website nehmen

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"));

Dies wird auf der Webseite navigieren einen mobilen User-Agent-String und erlauben verwenden Sie mobile Websites on the fly in der WebBrowser-Steuerelement

anzuzeigen

Boydski Lösung war nicht das Richtige für mich. Beste Lösung für diesen Fall:

Ändern der User-Agent des WebBrowser-Steuerelement

Aber irgendwann die „navigator.userAgent“ nicht mit Kopf gesetzt - Lösung. In diesem Fall müssen Sie verwenden UrlMkSetSessionOption . 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);

Die richtige User-Agent-Strings finden Sie hier

Haben Sie Spaß!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top