You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何检测React应用页面运行在浏览器还是WebView2环境中

区分WebView2与普通浏览器的React解决方案

方案1:利用自定义User-Agent标识

  • 先在WPF的WebView2配置中,给User-Agent添加专属标识:
    // WPF端配置示例
    webView2.CoreWebView2.Settings.UserAgent = webView2.CoreWebView2.Settings.UserAgent + " WebView2-WPF";
    
  • React端通过读取navigator.userAgent判断环境:
    import { useEffect, useState } from 'react';
    
    function App() {
      const [isWebView2, setIsWebView2] = useState(false);
    
      useEffect(() => {
        setIsWebView2(navigator.userAgent.includes('WebView2-WPF'));
      }, []);
    
      return (
        <div>
          {!isWebView2 && <div>仅普通浏览器可见的内容</div>}
          <div>全环境可见的内容</div>
        </div>
      );
    }
    
    export default App;
    

方案2:通过PostMessage通信标记环境

  • WPF的WebView2在页面加载完成后,向React页面发送环境标识:
    // WPF端代码示例
    webView2.CoreWebView2.PostWebMessageAsString("isWebView2");
    
  • React端监听message事件,识别环境:
    import { useEffect, useState } from 'react';
    
    function App() {
      const [isWebView2, setIsWebView2] = useState(false);
    
      useEffect(() => {
        const handleMessage = (event) => {
          if (event.data === 'isWebView2') setIsWebView2(true);
        };
    
        window.addEventListener('message', handleMessage);
        return () => window.removeEventListener('message', handleMessage);
      }, []);
    
      return (
        <div>
          {!isWebView2 && <div>仅普通浏览器可见的内容</div>}
          <div>全环境可见的内容</div>
        </div>
      );
    }
    
    export default App;
    

方案3:检测WebView2专属API

WebView2环境会暴露window.chrome.webview专属对象,普通Edge浏览器无此对象,可直接检测:

import { useEffect, useState } from 'react';

function App() {
  const [isWebView2, setIsWebView2] = useState(false);

  useEffect(() => {
    setIsWebView2(!!window.chrome?.webview);
  }, []);

  return (
    <div>
      {!isWebView2 && <div>仅普通浏览器可见的内容</div>}
      <div>全环境可见的内容</div>
    </div>
  );
}

export default App;

内容的提问来源于stack exchange,提问作者Ashok Sen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 21:42:46