【问题标题】:how to have the c# wpf webbrowser control load mobile version of websites如何让 c# wpf webbrowser 控件加载移动版网站
【发布时间】:2010-12-04 17:48:16
【问题描述】:

我有一个带有 webbrowser 控件的简单 WPF 应用程序。当我指示控件加载页面时,我想让控件告诉服务器它正在尝试从移动设备加载页面,因此加载页面的较小版本。我知道很多网站只是在地址前添加移动设备,所以 google.com 的移动页面只是 mobile.google.com,但我想知道是否有办法加载让网络服务器自动将我的网络浏览器控件定向到网站的移动版本?我觉得应该有一个非常简单的方法来做到这一点,但我就是想不通:)。

提前致谢!!!

【问题讨论】:

    标签: c# wpf controls browser mobile-website


    【解决方案1】:

    这通常由站点使用User Agent 控制,这不是您可以使用标准WebBrowser 控件更改的内容。有一个替代的 WPF webbrowser 控件,基于Chromium,您可以从CodePlex 下载。它可能不支持开箱即用的用户代理欺骗,但它是开源的,因此您可以在代码中手动将其更改为 iPhone、Windows Mobile 等。

    【讨论】:

    • 非常明确的答案。我要说您需要将用户代理设置为基于电话的 UA,但我不知道您无法轻松更改 UA。
    • 感谢您的回复!我会试试 Chromium。
    【解决方案2】:

    实际上,WebBrowser 确实支持通过 Navigate 方法中的标头更改用户代理:

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

    【讨论】:

    • 我认为你可能是堆栈溢出中唯一一个曾经对这个问题发布过正确答案的人......
    • 没错。它不起作用。用户定义的 UA 字符串被覆盖
    【解决方案3】:

    Boydski 的解决方案不适合我。 这种情况的最佳解决方案:

    Changing the user agent of the WebBrowser control

    但有时“navigator.userAgent”没有设置标题 - 解决方案。 在这种情况下,您必须使用 UrlMkSetSessionOptionMSDN

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

    你可以找到正确的用户代理字符串here

    玩得开心!

    【讨论】:

      【解决方案4】:

      我知道这是旧的,但这很容易做到:

      首先你需要用户代理字符串并且它需要被格式化。这就是我在下面做的方式 wbMobile 是一个网络浏览器控件。此示例将带您访问移动必应网站

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

      这将使用移动用户代理字符串导航到网页,并允许您在网络浏览器控件中即时查看移动网站

      【讨论】:

        猜你喜欢
        • 2012-12-28
        • 1970-01-01
        • 1970-01-01
        • 2011-05-22
        • 2021-11-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-09
        相关资源
        最近更新 更多