检测网站是否在Windows窗体中使用WebView运行

时间:2020-02-11 14:59:36

标签: javascript reactjs winforms webview

如上所述。我不需要做任何花哨的事情。我已经进行了一些研究,但是似乎找不到合适的解决方案。如果用户通过Windows窗体应用程序中的Webview运行网站,我打算在React应用程序中隐藏侧栏。最好的解决方法是什么? 检查版本或正在运行的浏览器是不可行的,因为Webview使用的是默认浏览器或方法中描述的浏览器,因此它只会返回该浏览器。 请记住,可以在Forms应用程序或React应用程序中进行检测,这无关紧要。 任何建议,将不胜感激。

1 个答案:

答案 0 :(得分:1)

我还可以想到以下解决方案:

  • 通过应用程序中的DOM操作来处理它:作为一种选择,您的应用程序可以通过在DOM中找到元素并将其隐藏来隐藏侧边栏。

  • 向服务器发送新的用户代理字符串,并按服务器呈现不同的输出:作为另一种选择,您可以将应用程序视为新的用户代理。因此,您可以发送自定义用户代理标头以及您的请求。这就是我用来假装request is coming from a mobile phone的方式。您可以为您的应用程序做类似的事情。

示例

[DllImport("urlmon.dll", CharSet = CharSet.Ansi)]
private static extern int UrlMkSetSessionOption(int dwOption, string pBuffer,
    int dwBufferLength, int dwReserved);
const int URLMON_OPTION_USERAGENT = 0x10000001;

string additionalHeaders = "User-Agent:MyApp\r\n";
private void Form1_Load(object sender, EventArgs e)
{
    UrlMkSetSessionOption(URLMON_OPTION_USERAGENT,
        additionalHeaders, additionalHeaders.Length, 0);
    webBrowser1.Navigate("http://google.com");
}

然后您的网站可以决定是否要基于用户代理进行渲染。

相关问题