欢迎光临
我们一直在努力

WebView Inspector 使用教程:从入门到精通

WebView Inspector 使用教程:从入门到精通

前面我介绍了 WebView Inspector 是什么,这篇手把手教你如何使用

一、快速上手

1.1 CDN 引入(最简单)

在你的 HTML 页面中添加:

<script src="https://cdn.jsdelivr.net/npm/webview-inspector/dist/webview-inspector.iife.js"></script>
<script>
WebViewInspector.init();
</script>

刷新页面,右下角会出现一个悬浮按钮,点击即可打开调试面板。

1.2 NPM 安装(推荐)

npm install webview-inspector

// ES Module 方式
import WebViewInspector from 'webview-inspector';
WebViewInspector.init();

// CommonJS 方式
const WebViewInspector = require('webview-inspector');
WebViewInspector.init();

1.3 直接下载

从 Gitee 下载 dist/webview-inspector.iife.js,放到项目中:

<script src="./path/to/webview-inspector.iife.js"></script>
<script>
WebViewInspector.init();
</script>


二、配置选项

init() 方法支持传入配置对象:

WebViewInspector.init({
enable: true, // 是否启用,默认 true
position: 'bottom-right', // 悬浮按钮位置,默认右下角
theme: 'dark', // 主题:dark / light
zIndex: 999999 // z-index,确保在最上层
});

position 可选值

值说明
'bottom-right' 右下角(默认)
'bottom-left' 左下角
'top-right' 右上角
'top-left' 左上角

theme 可选值

值说明
'dark' 深色主题(默认)
'light' 浅色主题

三、三大核心功能

3.1 环境检测

点击悬浮按钮 → 选择「环境」Tab,可以看到:

设备信息

  • 设备型号(iPhone 14 Pro / 小米13 等)
  • 操作系统版本(iOS 17.4 / Android 14)
  • 屏幕尺寸、DPR、安全区

浏览器/WebView 信息

  • 浏览器类型(微信 / App内嵌 / 普通浏览器)
  • WebView 类型(WKWebView / X5内核 / Chrome)
  • WebView 版本
  • 内核版本

微信环境特有

  • 微信版本号
  • 是否小程序环境

一键复制

点击底部的「复制环境信息」按钮,可以将所有信息复制到剪贴板,方便发给后端或记录到工单。

3.2 兼容性检测

点击悬浮按钮 → 选择「兼容」Tab,可以看到:

CSS 特性检测(30+项)

检测当前 WebView 是否支持:

  • 布局相关:flex、grid、flex-direction、justify-content 等
  • 视口单位:dvh、svh、lvh、vw、vh
  • CSS 函数:var、calc、clamp
  • 新特性:aspect-ratio、container queries、:focus-visible
  • 颜色空间:oklch、oklab、display-p3

JS API 检测(56+项)

检测当前 WebView 是否支持:

  • ES6+:Promise、async/await、Symbol、Map、Set
  • 观察器:IntersectionObserver、MutationObserver、ResizeObserver
  • 存储:localStorage、sessionStorage、IndexedDB
  • 网络:fetch、WebSocket、EventSource
  • Canvas:Canvas2D、WebGL、WebGL2
  • 其他:Clipboard、Geolocation、WebShare 等

使用场景

// 检测是否支持某个特性
const compat = WebViewInspector.getCompat();

if (!compat.css.grid) {
console.log('当前 WebView 不支持 CSS Grid,使用 flex 布局替代');
}

if (!compat.js.IntersectionObserver) {
console.log('不支持 IntersectionObserver,使用 scroll 事件替代');
}

3.3 错误捕获

点击悬浮按钮 → 选择「错误」Tab,可以看到:

自动捕获的错误类型

  • JS 运行时错误

    throw new Error('这是一个测试错误');

  • Promise 未捕获错误

    Promise.reject('这是一个 Promise 错误');

  • 资源加载失败

    <img src="不存在的图片.jpg">
    <script src="不存在的脚本.js"></script>

  • 错误信息包含

    • 错误类型(ERROR / PROMISE / RESOURCE)
    • 错误信息
    • 完整堆栈
    • 发生时间

    一键复制

    点击错误卡片,可以复制完整的错误信息和堆栈,方便反馈问题。


    四、API 详解

    4.1 实例方法

    方法说明返回值
    init(options?) 初始化调试工具 WebViewInspector
    show() 显示悬浮按钮 void
    hide() 隐藏悬浮按钮和面板 void
    showPanel(tab?) 打开面板,可指定 Tab void
    getEnv() 获取环境信息对象 EnvInfo
    getCompat() 获取兼容性报告对象 CompatReport
    getErrors() 获取错误列表 ErrorInfo[]
    clearErrors() 清空错误列表 void
    refresh() 刷新所有数据 void
    updateOptions(options) 更新配置 void
    destroy() 销毁实例 void

    4.2 编程式使用

    // 获取环境信息
    const env = WebViewInspector.getEnv();
    console.log('设备型号:', env.device);
    console.log('系统版本:', env.os);
    console.log('WebView版本:', env.webview);

    // 获取兼容性报告
    const compat = WebViewInspector.getCompat();
    console.log('支持 Grid:', compat.css.grid);
    console.log('支持 IntersectionObserver:', compat.js.IntersectionObserver);

    // 获取错误列表
    const errors = WebViewInspector.getErrors();
    console.log('错误数量:', errors.length);

    // 清空错误
    WebViewInspector.clearErrors();

    // 刷新数据
    WebViewInspector.refresh();

    4.3 手动创建实例

    const inspector = new WebViewInspector({
    position: 'bottom-left',
    theme: 'light'
    });

    inspector.show(); // 显示
    inspector.hide(); // 隐藏
    inspector.destroy(); // 销毁


    五、实际使用场景

    场景一:用户反馈页面有问题

    传统做法

    用户:页面打不开
    开发:什么手机?
    用户:华为
    开发:什么型号?
    用户:不知道
    开发:什么系统?
    用户:不知道
    开发:…

    使用 WebView Inspector

    用户:页面打不开
    开发:点一下右下角的放大镜按钮,点"复制环境信息",发给我
    用户:[复制了环境信息]
    开发:好的,是华为 P40,鸿蒙 3.0,微信 8.0.33,我看看…

    场景二:排查兼容性问题

    // 在代码中检测特性支持
    const compat = WebViewInspector.getCompat();

    // 如果不支持 dvh,使用 vh 替代
    if (!compat.css.dvh) {
    document.documentElement.style.setProperty('–vh', `${window.innerHeight * 0.01}px`);
    }

    // 如果不支持 IntersectionObserver,使用传统方案
    if (!compat.js.IntersectionObserver) {
    // 使用 scroll 事件监听
    window.addEventListener('scroll', handleScroll);
    } else {
    // 使用 IntersectionObserver
    const observer = new IntersectionObserver(callback);
    observer.observe(target);
    }

    场景三:线上错误监控

    // 定期上报错误
    setInterval(() => {
    const errors = WebViewInspector.getErrors();
    if (errors.length > 0) {
    // 上报到服务器
    fetch('/api/report', {
    method: 'POST',
    body: JSON.stringify({
    env: WebViewInspector.getEnv(),
    errors: errors
    })
    });
    // 清空已上报的错误
    WebViewInspector.clearErrors();
    }
    }, 30000);


    六、常见问题

    Q1:生产环境要不要引入?

    建议:

    • 开发/测试环境:引入,方便调试
    • 生产环境:可以引入,设置 enable: false,需要时通过代码开启

    WebViewInspector.init({
    enable: location.hostname !== 'production.com' // 只在非生产环境启用
    });

    // 需要时可以通过代码开启
    // WebViewInspector.updateOptions({ enable: true });

    Q2:和其他调试工具冲突吗?

    不冲突。WebView Inspector 只提供环境检测和兼容性检测,不拦截 console 或网络请求,可以和 vConsole、Eruda 同时使用。

    Q3:支持哪些环境?

    • iOS 10+ / Android 5+
    • 微信内置浏览器
    • 各类 App 内嵌 WebView
    • 普通移动端浏览器

    Q4:体积多大?

    gzip 后 < 50KB,零依赖,非常轻量。


    七、相关链接

    • Gitee 仓库:https://gitee.com/chenzs_46/WebViewInspector
    • NPM 包:https://www.npmjs.com/package/webview-inspector

    有问题欢迎在评论区留言,或者到 Gitee 提 Issue!


    #WebView调试 #前端工具 #使用教程 #移动端H5

    赞(0)
    未经允许不得转载:171主机测评 » WebView Inspector 使用教程:从入门到精通
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址