@capgo/inappbrowser

中文文档
8.6.14发布于 2026/05/28MPL-2.0TypeScriptESM + CJS零依赖构建来源已验证近 30 天下载 16.6万

应用程序浏览器中的电容插件

此软件包已被标记为弃用

This package has moved to @capgo/capacitor-inappbrowser. Please install @capgo/capacitor-inappbrowser instead.

中文使用文档
文档目录56 节
  1. QQ 与 Capgo 为您的 App 即时更新
  2. [''''] 缺少一个功能? 我们会为你构建插件 。 @ @ info
  3. 为什么是InApp Browser?
  4. 文档
  5. 兼容性
  6. 安装
  7. 使用量
  8. 自定义 Chrome 自定义标签外观( Android)
  9. 打开带有自定义尺寸的 Web View
  10. 以安全边距打开网络视图
  11. 在全屏模式下打开 Webview
  12. 代理实例
  13. 测试应用程序和代码 :
  14. 相机使用量
  15. 微型电话的使用
  16. 地点使用情况
  17. 双向交流
  18. 关闭来自 inapprowser 本身的 approwser
  19. 谷歌付费( Android)
  20. API 密码
  21. goBack (...) (中文(简体) )
  22. 打开(...)
  23. 清除 Cookies (...)
  24. 清除所有 Cookies (...)
  25. 清除缓存(...)
  26. 获取 Cookies (...)
  27. 关闭(...)
  28. 隐藏(...)
  29. 显示(...)
  30. 打开WebView(...)
  31. 执行脚本(...)
  32. 后 Message (...) 翻译
  33. 拍摄 Screenshot(...)
  34. 设置Url(...)
  35. 添加倾听器( “ url ChangeEvent , )..
  36. 添加收听器( “ 按钮附近” )..
  37. 添加聆听器( “ 关闭Event ” ,...)
  38. 添加倾听器('确认BtnClicked',...)
  39. 添加Listener( 来自Webview 的信息),..
  40. 添加倾听器( “ 屏幕截图 ” ,...)
  41. 添加倾听器('浏览器PageLoaded',...)
  42. 添加倾听器( “ pageLoadError, ” )..
  43. 添加收听器( “ 海关计程器已截取 ” ,...)
  44. 添加倾听器( “ 下载完成 ” ,...)
  45. 添加倾听器( “ 下载失败 ” ,...)
  46. 添加倾听器( “ popup Window Opened ” ,...)
  47. 添加倾听器( “ 代理请求 ” )..
  48. 添加Listener('consoleMessage', ...) 键盘
  49. 处理 Proxy 请求(...)
  50. 删除所有收听器( )
  51. 重新装入(...)
  52. 更新 Dimension (...)
  53. 设置可操作的SafeTop Margin (...)
  54. 设置可操作的SafeBottom Margin (...)
  55. 打开SecureWindow(...)
  56. 接口

@ capgo/ inapp浏览器

Capgo - Instant updates for Capacitor

应用浏览器中的Capacitor插件,有urlChangeEvent,双向通信,相机和麦克风使用等功能.

为什么是InApp Browser?

官方Capacitor浏览器插件有严格的安全限制,可以防止高级特性. InAppBrowser 取消了这些限制, 允许 :

  • 双向通信 在您的应用程序和浏览器之间
  • Java 脚本注入 用于动态内容操作
  • 相机和麦克风接入 在浏览器上下文中
  • URL 变化监测 导航跟踪
  • 自定义工具栏和 UI 品牌经验
  • Cookie 和缓存管理 用于会话控制
  • 自定义大小 用于额外控制显示位置

适合OAuth流量,嵌入式网络应用,视频通话,以及任何需要与网络内容深度融合的情景.

文档

这里有最完整的医生: https://capgo.app/docs/plugins/inappbrowser/ 互联网档案馆的存檔,存档日期2013-12-11

兼容性

插件版本电容兼容性维护
联合国联合国✅
页:1页:1应要求
页:1页:1❌
页:1页:1❌

说明: 此插件的主要版本沿用了Capacitor的主要版本. 使用匹配您的 Capacitor 安装的版本( 如 Capacitor 8 的插件 v8) 。 只有最新的主要版本得到积极维护.

安装

npm install @capgo/inappbrowser
npx cap sync

使用量

import { InAppBrowser } from '@capgo/inappbrowser';

InAppBrowser.open({ url: 'YOUR_URL' });

自定义 Chrome 自定义标签外观( Android)

这个 open() 在Android上发射Chrome自定义标签。 您可以自定义其外观以与您的应用程序相融合 :

import { InAppBrowser } from '@capgo/inappbrowser';

InAppBrowser.open({
  url: 'https://example.com',
  toolbarColor: '#1A1A2E', // Match your app's theme
  showTitle: true, // Show page title instead of raw URL
  showArrow: true, // Back arrow instead of X close icon
  urlBarHidingEnabled: true, // Auto-hide URL bar on scroll
  disableShare: true, // Remove share from overflow menu
  disableBookmark: true, // Hide bookmark icon (undocumented, may break)
  disableDownload: true, // Hide download icon (undocumented, may break)
});

所有CCT选项都是只使用Android并安全被iOS忽略. 见 OpenOptions 用于完整文档.

打开带有自定义尺寸的 Web View

默认情况下,网页视图会在全屏中打开. 您可以设置自定义维度来控制大小和位置 :

import { InAppBrowser } from '@capgo/inappbrowser';

// Open with custom dimensions (400x600 at position 50,100)
const { id } = await InAppBrowser.openWebView({
  url: 'YOUR_URL',
  width: 400,
  height: 600,
  x: 50,
  y: 100,
});

// Update dimensions at runtime
InAppBrowser.updateDimensions({
  id, // Optional, if omitted targets the active webview
  width: 500,
  height: 700,
  x: 100,
  y: 150,
});

触摸通过:当设定自定义维度(不是全屏)时,在网页视图界限外的触摸会穿过到基本的Capacitor网络视图,让用户在被曝光区域与你的应用交互. 这使得 InAppBrowser 在您的内容之上浮出水面的图片样式体验成为可能 .

以安全边距打开网络视图

要创建带有 20px 底边距( 浏览器外的安全边距) 的 WebView :

import { InAppBrowser } from '@capgo/inappbrowser';

InAppBrowser.openWebView({
  url: 'YOUR_URL',
  enabledSafeBottomMargin: true,
});

不支持 Web 平台 。 使用 window.open 换句话说.

在全屏模式下打开 Webview

要以真实的全屏模式打开网页视图( 内容延伸至状态栏后面), 设置 enabledSafeTopMargin 改为 false数字 :

import { InAppBrowser } from '@capgo/inappbrowser';

InAppBrowser.openWebView({
  url: 'YOUR_URL',
  enabledSafeTopMargin: false, // Disables safe area at top, allows full screen
});

此选项独立于工具栏类型 :

  • iOS系统:网页视图延伸至状态栏后方,提供真实的边缘到边缘内容
  • 机器人:上边框已禁用,允许内容填充整个屏幕

适合电子玩家,游戏等浸入体验,或全屏网络应用. 可与任何 toolbarType 设置.

代理实例

[大 代理处理在 8.6.0。 。 。 . 如果您已经依赖了旧的代理流, 请将此作为断开的迁移处理, 在运输前重新测试您的处理器 . 仅因为API名称保持不变,现有的代理处理器被认为不相容.

  • 现在使用本地第一匹配 outboundProxyRules 财务报告和审定财务报表 inboundProxyRules。 。 。 .
  • JavaScript 代理处理器现在收到一个 phase (单位:千美元)outbound 或者说 inbound) (中文(简体) ).
  • 如果您手动回复 handleProxyRequest(...),通过同样的 phase 回到原生状态.
  • 逾期答复,无正本 phase 现在可以忽略而不是改变错误的请求阶段.
  • proxyRequests: true 财务报告和审定财务报表 proxyRequests: "<regex>" 仍然是遗留的相容模式。 不要不重新测试就将遗留模式与基于规则的新流相混合.
  • 仅使用 URL/ 方法而不是保存的代理收听器 phase 与新流量不兼容.

以本地方式封锁一个请求

在不通过 JavaScript 绕行停止请求时使用本地规则 :

import { InAppBrowser } from '@capgo/inappbrowser';

await InAppBrowser.openWebView({
  url: 'https://example.com',
  outboundProxyRules: [
    {
      urlRegex: '^https://www\\.google-analytics\\.com/.*',
      action: 'cancel',
    },
  ],
});

JavaScript 的一个脚本

使用 delegateToJs 如果您想要本地匹配, 但仍希望 JavaScript 替换响应 :

import { InAppBrowser, addProxyHandler } from '@capgo/inappbrowser';

const proxyHandle = await addProxyHandler(async (request) => {
  if (request.phase === 'inbound' && request.url.includes('connect.facebook.net')) {
    return new Response('window.FB = { init: () => {}, login: () => {}, getLoginStatus: () => {} };', {
      status: 200,
      headers: {
        'Content-Type': 'application/javascript; charset=utf-8',
      },
    });
  }

  return null;
});

await InAppBrowser.openWebView({
  url: 'https://www.grailed.com/users/sign_up',
  inboundProxyRules: [
    {
      urlRegex: '^https://connect\\.facebook\\.net/.*',
      action: 'delegateToJs',
    },
  ],
});

// Later, when you are done:
await proxyHandle.remove();

在 JavaScript 中重写输出的 API 请求

当一个请求在离开网页视图前必须修改时,返回 a request 覆盖 :

import { InAppBrowser, addProxyHandler } from '@capgo/inappbrowser';

const proxyHandle = await addProxyHandler(async (request) => {
  if (request.phase === 'outbound' && request.url.includes('/api/private')) {
    return {
      request: {
        url: request.url,
        headers: {
          ...request.headers,
          Authorization: 'Bearer MY_TOKEN',
          'X-Proxy-Debug': 'enabled',
        },
      },
    };
  }

  return null;
});

await InAppBrowser.openWebView({
  url: 'https://example.com/dashboard',
  outboundProxyRules: [
    {
      urlRegex: '^https://example\\.com/api/private.*',
      action: 'delegateToJs',
    },
  ],
});

// Later, when you are done:
await proxyHandle.remove();

测试应用程序和代码 :

https://github.com/Cap-go/demo-app/blob/main/src/views/plugins/Web.vue 互联网档案馆的存檔,存档日期2013-12-20

相机使用量

机器人

在您的 AndroidManifest.xml 文件 :

    <uses-permission android:name="android.permission.CAMERA" />
        <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
        <uses-permission android:name="android.permission.RECORD_AUDIO"/>

然后在使用相机时会询问权限.

iOS系统

在您的 Info.plist 文件 :

<key>NSCameraUsageDescription</key>
<string>We need access to the camera to record audio.</string>

微型电话的使用

机器人

在您的 AndroidManifest.xml 文件 :

<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />

然后在使用麦克风时会询问许可.

iOS系统

在您的 Info.plist 文件 :

<key>NSMicrophoneUsageDescription</key>
<string>We need access to the microphone to record audio.</string>

地点使用情况

机器人

在您的 AndroidManifest.xml 文件 :

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

然后,在网页视图中的网站何时请求位置,将询问权限.

iOS系统

在您的 Info.plist 文件 :

<key>NSLocationWhenInUseUsageDescription</key>
<string>We need access to your location to provide location-based services.</string>

双向交流

通过此插件, 您可以将主应用程序的事件发送到内存浏览器, 反之亦然 .

数据被作为JSON对象发送,因此不允许任何函数或其他非JSON序列化类型.

对不应用者的主要应用, 细节对象为修饰

const { id } = await InAppBrowser.openWebView({ url: 'YOUR_URL' });
InAppBrowser.postMessage({ id, detail: { message: 'myMessage' } });
// Or broadcast to all open webviews
InAppBrowser.postMessage({ detail: { message: 'broadcast' } });

从 inapprowser 中的本地接收事件

window.addEventListener('messageFromNative', (event) => {
  console.log(event);
});

从 inapprowser 发送事件到主应用程序, 细节对象为修饰

window.mobileApp.postMessage({ detail: { message: 'myMessage' } });

接收主应用程序中无法浏览的事件

InAppBrowser.addListener('messageFromWebview', (event) => {
  console.log(event.id, event.detail);
});

关闭来自 inapprowser 本身的 approwser

window.mobileApp.close();

谷歌付费( Android)

要在Android上的应用程序浏览器内启用 Google Pay, 您必须这样做 所有三个 改为:

1. 打开浏览器时启用选项

过 enableGooglePaySupport: true 在你身边 openWebView 电话 :

InAppBrowser.openWebView({
  url: 'https://your-checkout-page.example.com',
  enableGooglePaySupport: true,
});

2. 向您添加付款请求意向查询 AndroidManifest.xml

Android 11+ 执行 软件包可见度。如果没有这些条目,WebView将无法发现Google Pay,付款表将永远不会出现.

添加以下内容: <manifest> 您的应用程序标签 AndroidManifest.xml (通常为: android/app/src/main/AndroidManifest.xml:

<queries>
  <!-- Required for Google Pay / Payment Request API in WebView -->
  <intent>
    <action android:name="org.chromium.intent.action.PAY" />
  </intent>
  <intent>
    <action android:name="org.chromium.intent.action.IS_READY_TO_PAY" />
  </intent>
  <intent>
    <action android:name="org.chromium.intent.action.UPDATE_PAYMENT_DETAILS" />
  </intent>
</queries>

3. 要求Webview 120或以后

W3C支付请求API(由Google Pay使用)要求Android WebView 120+. 运行更古老的WebView版本的设备将无法完成Google Pay交易. 大多数现代Android设备已经满足了这一要求.

API 密码

goBack (...) (中文(简体) )

goBack(options?: { id?: string | undefined; } | undefined) => Promise<{ canGoBack: boolean; }>

如果可能, 在 WebView 的历史中导航

参数类型
options{ id?: string; }

回返情况: Promise<{ canGoBack: boolean; }>

自: 7.21.0 国家


打开(...)

open(options: OpenOptions) => Promise<any>

在新窗口全屏中打开 URL, 它使用自定义的铬标签, 在 ios 上使用 SFSafariView 控制器

参数类型
optionsOpenOptions

回返情况: Promise<any>

自: 0.1.0 (中文(简体) )


清除 Cookies (...)

clearCookies(options: ClearCookieOptions) => Promise<any>

清除 URL 的饼干 何时 id ,并适用于所有开放的网页视图.

参数类型
optionsClearCookieOptions

回返情况: Promise<any>

自: 0.5.0 (单位:千美元)


清除所有 Cookies (...)

clearAllCookies(options?: { id?: string | undefined; } | undefined) => Promise<any>

清除全部饼干 何时 id ,并适用于所有开放的网页视图.

参数类型
options{ id?: string; }

回返情况: Promise<any>

自: 6.5.0 (中文(简体) )


清除缓存(...)

clearCache(options?: { id?: string | undefined; } | undefined) => Promise<any>

清除缓存 何时 id ,并适用于所有开放的网页视图.

参数类型
options{ id?: string; }

回返情况: Promise<any>

自: 6.5.0 (中文(简体) )


获取 Cookies (...)

getCookies(options: GetCookieOptions) => Promise<Record<string, string>>

获取特定 URL 的 cookie .

参数类型说明
optionsGetCookieOptions选项,包括获取 cookie 的 URL .

回返情况: Promise<Record<string, string>>


关闭(...)

close(options?: CloseWebviewOptions | undefined) => Promise<any>

关闭网页视图. 何时 id 中省略,关闭活动的网页视图.

参数类型
optionsCloseWebviewOptions

回返情况: Promise<any>


隐藏(...)

hide(options?: { id?: string | undefined; } | undefined) => Promise<void>

隐藏网页视图而不关闭 . 使用显示( ) 把它带回来 . 何时 id 被省略,以活动网页视图为目标.

参数类型
options{ id?: string; }

自: 8.0.8 (中文(简体) )


显示(...)

show(options?: { id?: string | undefined; } | undefined) => Promise<void>

显示先前隐藏的网页视图 . 何时 id 被省略,以活动网页视图为目标.

参数类型
options{ id?: string; }

自: 8.0.8 (中文(简体) )


打开WebView(...)

openWebView(options: OpenWebViewOptions) => Promise<{ id: string; }>

在有工具栏的新网页视图中打开url,并增强能力,如相机访问,文件访问,收听事件,注入javascript,双向通信等.

JavaScript 接口 : 当您用这种方法打开一个网页视图时, JavaScript 接口会自动被注入,提供:

  • window.mobileApp.close(): 从 JavaScript 关闭网页视图
  • window.mobileApp.postMessage({detail: {message: "myMessage"}}): 从网页视图发送消息到应用程序, 细节对象是您想要发送到网页视图的数据
  • window.mobileApp.takeScreenshot() 何时 allowScreenshotsFromWebPage 真实

承诺时间因平台而异 isPresentAfterPageLoad 已使用. Android 解决与 { id } 在对话框准备好控制后, iOS 解决 { id } 创建本地网页视图后立即开始 .

参数类型
optionsOpenWebViewOptions

回返情况: Promise<{ id: string; }>

自: 0.1.0 (中文(简体) )


执行脚本(...)

executeScript(options: { code: string; id?: string; }) => Promise<void>

将JavaScript代码注入InApp浏览器窗口. 何时 id 被省略,在所有打开的网页视图中执行.

参数类型
options{ code: string; id?: string; }

后 Message (...) 翻译

postMessage(options: { detail: Record<string, any>; id?: string; }) => Promise<void>

将事件发送到网页视图( inapprowser) 。 您可以用窗口在无法阅读的 JS 中收听此事件。 add Event Listener (“ message From Native ” ), 听者Func : (活动 : 记录< 字符串, 任何 > )\ 无效 ) 细节是您想要发送到 Webview 的数据, 这是 Capacitor 的一项要求, 我们不能直接发送对象 您的对象必须可序列到 JSON, 所以不允许功能或其他非 JSON 序列化类型 . 何时 id 被省略,向所有开放的网页视图广播.

参数类型
options{ detail: Record<string, any>; id?: string; }

拍摄 Screenshot(...)

takeScreenshot(options?: { id?: string | undefined; } | undefined) => Promise<ScreenshotResult>

抓取当前网页视图端口为 PNG 截图 . 何时 id 被省略,以活动网页视图为目标.

参数类型
options{ id?: string; }

回返情况: Promise<ScreenshotResult>


设置Url(...)

setUrl(options: { url: string; id?: string; }) => Promise<any>

设置网页视图的 URL. 何时 id 被省略,以活动网页视图为目标.

参数类型
options{ url: string; id?: string; }

回返情况: Promise<any>


添加倾听器( “ url ChangeEvent , )..

addListener(eventName: 'urlChangeEvent', listenerFunc: UrlChangeListener) => Promise<PluginListenerHandle>

听 url 更改, 只为 openWebView

参数类型
eventName'urlChangeEvent'
listenerFuncUrlChangeListener

回返情况: Promise<PluginListenerHandle>

自: 0.0.1 资源


添加收听器( “ 按钮附近” )..

addListener(eventName: 'buttonNearDoneClick', listenerFunc: ButtonNearListener) => Promise<PluginListenerHandle>
参数类型
eventName'buttonNearDoneClick'
listenerFuncButtonNearListener

回返情况: Promise<PluginListenerHandle>


添加聆听器( “ 关闭Event ” ,...)

addListener(eventName: 'closeEvent', listenerFunc: UrlChangeListener) => Promise<PluginListenerHandle>

仅为打开WebView而点击关闭

参数类型
eventName'closeEvent'
listenerFuncUrlChangeListener

回返情况: Promise<PluginListenerHandle>

自: 0.4.0 (中文(简体) )


添加倾听器('确认BtnClicked',...)

addListener(eventName: 'confirmBtnClicked', listenerFunc: ConfirmBtnListener) => Promise<PluginListenerHandle>

当用户在需要免责声明时点击确认按钮时会被触发, 使用 OpenWebView 共享解说和关闭 Modal 工作

参数类型
eventName'confirmBtnClicked'
listenerFuncConfirmBtnListener

回返情况: Promise<PluginListenerHandle>

自: 0.0.1 资源


添加Listener( 来自Webview 的信息),..

addListener(eventName: 'messageFromWebview', listenerFunc: (event: { id?: string; detail?: Record<string, any>; rawMessage?: string; }) => void) => Promise<PluginListenerHandle>

当事件从webview( inappbrowser)发送时会被触发,将事件发送到主应用程序使用窗口.mobileApp.postMessage({"detail":{"message":"myMessage"}}) 细节是您想要发送到主应用程序的数据, 这是Capacitor的要求, 我们不能直接发送对象 您的对象必须是可序列化的 JSON, 不允许任何函数或其他非 JSON 序列化类型 .

此方法在网络视图运行时注入

参数类型
eventName'messageFromWebview'
listenerFunc(event: { id?: string; detail?: Record<string, any>; rawMessage?: string; }) => void

回返情况: Promise<PluginListenerHandle>


添加倾听器( “ 屏幕截图 ” ,...)

addListener(eventName: 'screenshotTaken', listenerFunc: (event: ScreenshotResult & { id?: string; }) => void) => Promise<PluginListenerHandle>

一旦从插件 API 中捕获到截图, 就会被触发, 本地截图按钮,或注入的JavaScript桥.

参数类型
eventName'screenshotTaken'
listenerFunc(event: ScreenshotResult & { id?: string; }) => void

回返情况: Promise<PluginListenerHandle>


添加倾听器('浏览器PageLoaded',...)

addListener(eventName: 'browserPageLoaded', listenerFunc: (event: { id?: string; }) => void) => Promise<PluginListenerHandle>

装入页面时将触发

参数类型
eventName'browserPageLoaded'
listenerFunc(event: { id?: string; }) => void

回返情况: Promise<PluginListenerHandle>


添加倾听器( “ pageLoadError, ” )..

addListener(eventName: 'pageLoadError', listenerFunc: (event: { id?: string; }) => void) => Promise<PluginListenerHandle>

页面加载错误时会被触发

参数类型
eventName'pageLoadError'
listenerFunc(event: { id?: string; }) => void

回返情况: Promise<PluginListenerHandle>


添加收听器( “ 海关计程器已截取 ” ,...)

addListener(eventName: 'customSchemeIntercepted', listenerFunc: CustomSchemeInterceptedListener) => Promise<PluginListenerHandle>

当网页视图拦截到非标准自定义方案时会触发 把它交给操作系统.

由操作系统处理的标准计划,例如 tel:, (中文(简体) ), mailto:,以及 sms: 除外.

参数类型
eventName'customSchemeIntercepted'
listenerFuncCustomSchemeInterceptedListener

回返情况: Promise<PluginListenerHandle>

自: 8.6.7 联合国


添加倾听器( “ 下载完成 ” ,...)

addListener(eventName: 'downloadCompleted', listenerFunc: (event: DownloadCompletedEvent) => void) => Promise<PluginListenerHandle>

本地下载处理保存本地文件后将触发 . 启用此选项 handleDownloads: true 当打开网页视图时.

参数类型
eventName'downloadCompleted'
listenerFunc(event: DownloadCompletedEvent) => void

回返情况: Promise<PluginListenerHandle>

自: 8.6.0 (简体中文)


添加倾听器( “ 下载失败 ” ,...)

addListener(eventName: 'downloadFailed', listenerFunc: (event: DownloadFailedEvent) => void) => Promise<PluginListenerHandle>

当本地下载处理失败时会触发 . 启用此选项 handleDownloads: true 当打开网页视图时.

参数类型
eventName'downloadFailed'
listenerFunc(event: DownloadFailedEvent) => void

回返情况: Promise<PluginListenerHandle>

自: 8.6.0 (简体中文)


添加倾听器( “ popup Window Opened ” ,...)

addListener(eventName: 'popupWindowOpened', listenerFunc: (event: PopupWindowEvent) => void) => Promise<PluginListenerHandle>

每当页面打开弹出/ 新窗口时都会被触发 . 使用返回的弹出编号 executeScript, (中文(简体) ), postMessage, (中文(简体) ), show, (中文(简体) ), hide,以及 close。 。 。 .

参数类型
eventName'popupWindowOpened'
listenerFunc(event: PopupWindowEvent) => void

回返情况: Promise<PluginListenerHandle>

自: 8.6.0 (简体中文)


添加倾听器( “ 代理请求 ” )..

addListener(eventName: 'proxyRequest', listenerFunc: (event: ProxyRequest) => void) => Promise<PluginListenerHandle>

倾听本地运行时间授权的代理请求. 偏爱 addProxyHandler() 而不是直接打电话.

参数类型
eventName'proxyRequest'
listenerFunc(event: ProxyRequest) => void

回返情况: Promise<PluginListenerHandle>

自: 8.6.0 (简体中文)


添加Listener('consoleMessage', ...) 键盘

addListener(eventName: 'consoleMessage', listenerFunc: (event: ConsoleMessageEvent) => void) => Promise<PluginListenerHandle>

听从管理页面释放的 JavaScript 控制台输出 . 启用此选项 captureConsoleLogs: true 当打开网页视图时.

参数类型
eventName'consoleMessage'
listenerFunc(event: ConsoleMessageEvent) => void

回返情况: Promise<PluginListenerHandle>

自: 8.6.0 (简体中文)


处理 Proxy 请求(...)

handleProxyRequest(options: { requestId: string; decision?: ProxyDecision | null; response?: ProxyResponse | null; webviewId?: string; phase?: 'outbound' | 'inbound'; }) => Promise<void>

内部方法 addProxyHandler() 将代理决定发回本地. 转发原件 phase 当对手册作出答复时 proxyRequest 听着.

参数类型
options{ requestId: string; decision?: ProxyDecision | null; response?: ProxyResponse | null; webviewId?: string; phase?: 'outbound' | 'inbound'; }

自: 8.6.0 (简体中文)


删除所有收听器( )

removeAllListeners() => Promise<void>

删除此插件的所有听众 .

自: 1.0.0 (单位:千美元)


重新装入(...)

reload(options?: { id?: string | undefined; } | undefined) => Promise<any>

重新装入当前网页 .

参数类型
options{ id?: string; }

回返情况: Promise<any>

自: 1.0.0 (单位:千美元)


更新 Dimension (...)

updateDimensions(options: DimensionOptions & { id?: string; }) => Promise<void>

更新网页视图的尺寸 . 允许在运行时更改网页视图的大小和位置 . 何时 id 被省略,以活动网页视图为目标.

参数类型说明
optionsDimensionOptions & { id?: string; }尺寸选项( 宽度、 高度、 x、 y)

设置可操作的SafeTop Margin (...)

setEnabledSafeTopMargin(options: { enabled: boolean; id?: string; }) => Promise<void>

设置运行时网页视图的安全顶端边距 . 何时 id 被省略,以活动网页视图为目标. 在Web上,这种方法是一种不开放并解析而不改变布局的方法.

参数类型
options{ enabled: boolean; id?: string; }

设置可操作的SafeBottom Margin (...)

setEnabledSafeBottomMargin(options: { enabled: boolean; id?: string; }) => Promise<void>

设置运行时网页视图的安全底边距 . 何时 id 被省略,以活动网页视图为目标. 在Web上,这种方法是一种不开放并解析而不改变布局的方法.

参数类型
options{ enabled: boolean; id?: string; }

打开SecureWindow(...)

openSecureWindow(options: OpenSecureWindowOptions) => Promise<OpenSecureWindowResponse>

打开 OAuth2 认证的安全窗口. 对于 Web, 您应该有重定向页面中的代码来使用广播频道将重定向的url发送到应用程序中 比如说:

&lt;html&gt;
&lt;head&gt;&lt;/head&gt;
&lt;body&gt;
&lt;script&gt;
  const searchParams = new URLSearchParams(location.search)
  if (searchParams.has("code")) {
    new BroadcastChannel("my-channel-name").postMessage(location.href);
    window.close();
  }
&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;

对于移动,你应该有一个方向回路的uri打开应用程序,比如: myapp://oauth_callback/ 并在应用程序的信息中注册 列表 :

&lt;key&gt;CFBundleURLTypes&lt;/key&gt;
&lt;array&gt;
   &lt;dict&gt;
      &lt;key&gt;CFBundleURLSchemes&lt;/key&gt;
      &lt;array&gt;
         &lt;string&gt;myapp&lt;/string&gt;
      &lt;/array&gt;
   &lt;/dict&gt;
&lt;/array&gt;

在AndroidManifest.xml的文件中:

&lt;activity&gt;
   &lt;intent-filter&gt;
      &lt;action android:name="android.intent.action.VIEW" /&gt;
      &lt;category android:name="android.intent.category.DEFAULT" /&gt;
      &lt;category android:name="android.intent.category.BROWSABLE" /&gt;
      &lt;data android:host="oauth_callback" android:scheme="myapp" /&gt;
   &lt;/intent-filter&gt;
&lt;/activity&gt;
参数类型说明
optionsOpenSecureWindowOptions- 打开SecureWindow电话的选项

回返情况: Promise<OpenSecureWindowResponse>


接口

打开选项

Prop类型说明默认自兹
urlstring要装入的目标 URL .0.1.0 (中文(简体) )
isPresentAfterPageLoadboolean如果为真,则在加载页面后显示浏览器,如果错误,则立即显示浏览器.0.1.0 (中文(简体) )
preventDeeplinkboolean如果无法打开深链接, 如果点击链接时会打开深链接0.1.0 (中文(简体) )
toolbarColorstring十六进制格式的工具栏背景颜色(例如"#1A1A2E"). 适用于光和暗两种颜色方案。 同时设置要匹配的导航栏颜色 . 只有机器人 ——被iOS忽略.8.2.0 (中文(简体) )
urlBarHidingEnabledboolean用户向下滚动时, URL 栏是否应当自动隐藏 。 酒吧在任何向上卷轴上重新出现. 只有机器人 ——被iOS忽略.false8.2.0 (中文(简体) )
showTitleboolean在工具栏中显示页面的 HTML <title> 而不是原始的 URL 。 当用户点击标题区域时, 真实的 URL 仍然可见 . 只有机器人 ——被iOS忽略.false8.2.0 (中文(简体) )
showArrowboolean将默认的"X"关闭图标替换为后箭头. 使自定义 Tab 感觉像本土导航推力而不是模式上覆. 只有机器人 ——被iOS忽略.false8.2.0 (中文(简体) )
disableShareboolean从溢出菜单中删除共享动作 . 只有机器人 ——被iOS忽略.false8.2.0 (中文(简体) )
disableBookmarkboolean在溢出菜单中隐藏书签明星图标。 使用无凭证的铬意向外加法——可能停止未来Chrome更新的工作. 只有机器人 ——被iOS忽略.false8.2.0 (中文(简体) )
disableDownloadboolean在溢出菜单中隐藏下载图标 。 使用无凭证的铬意向外加法——可能停止未来Chrome更新的工作. 只有机器人 ——被iOS忽略.false8.2.0 (中文(简体) )

清除Cookie 选项

Prop类型说明
idstring目标网页视图标识 。 省略时,适用于所有开放的网页视图.
urlstring

HtpCookie (美国英语)

Prop类型说明
urlstring饼干的URL.
keystring饼干的钥匙.
valuestring饼干的价值.

获取 Cookie 选项

Prop类型
urlstring
includeHttpOnlyboolean

关闭网络视图选项

Prop类型说明默认
idstring目标网络视图 ID 关闭。 如果省略,则关闭活动网页视图.
isAnimatedboolean网页视图的关闭是否为动画, 仅 iostrue

打开网络查看选项

Prop类型说明默认自兹
urlstring要装入的目标 URL .0.1.0 (中文(简体) )
headersHeaders页眉 与请求一起发送.0.1.0 (中文(简体) )
credentialsCredentials全权证书 将随请求和随后所有请求一起发送到同一主机.6.1.0 (中文(简体) )
methodstringHTTP 用于初始请求的方法 . 可选参数 - 未指定时默认获取 . 不提供这个参数的现有代码会随着标准GET请求而继续工作不变. 当指定“ POST” 、 “ PUT” 或“ PATCH” 方法支持一个天体时, 您也可以提供 body 参数与请求的有效载荷. 平台说明: - iOS: 完全支持所有带信头的 HTTP 方法 - Android: 由于WebView 的限制,自定义信头可能不会随 POST/PUT/PATCH 请求一起发送"GET"8.2.0 (中文(简体) )
bodystringHTTP正体在使用POST,PUT或其他支持正体的方法时随请求一起发送. 应该是一个字符串(JSON.stringify for JSON data). 可选参数 - 仅在 method 指定并支持请求机构. 暗示这个参数(或使用GET方法)导致标准行为,没有请求体.8.2.0 (中文(简体) )
materialPickerboolean材料 Picker:如果是真的,则在Android上使用取日期和取时器的材料设计主题. 这改善了HTML日期输入的外观,可以使用现代材料设计UI来代替旧式取取取器.false7.4.1 (中文(简体) )
jsInterfaceJavaScript 接口:网页视图自动注入 JavaScript 接口,提供: - window.mobileApp.close(): 从 JavaScript 关闭网页视图 - window.mobileApp.postMessage(obj): 向app发送消息(通过"Message from Webview"事件收听) - window.mobileApp.hide() 编号 : window.mobileApp.show() 当允许WebViewJs可视性控制在 CapacitorConfig 中实现时 - window.mobileApp.takeScreenshot() 何时 allowScreenshotsFromWebPage 真实6.1.0 (中文(简体) )
allowScreenshotsFromWebPageboolean允许页面 JavaScript 调用 window.mobileApp.takeScreenshot()。默认已禁用,所以只有主机应用程序可以通过插件 API 触发本地截图 .false8.4.0 (单位:百万美元)
captureConsoleLogsboolean输出 consoleMessage java 脚本事件 console.* 输出来自管理页面。 当网页视图隐藏起来时有用, 您仍然需要页面级诊断 .false8.6.0 (简体中文)
handleDownloadsboolean自动处理网络视图内部所触发的下载,而不需要自定义的JavaScript桥. 启用时: - 标准附件响应被写入临时文件 。 - blob: 下载在平台支持时也会被捕获. - 可预览文件在可能时在程序内浏览器内重新打开。 - 说吧 其他文件则移交给本地预览或查看器流程。 - downloadCompleted 财务报告和审定财务报表 downloadFailed 事件将保存的文件通知主机应用程序.false8.6.0 (简体中文)
shareDisclaimerDisclaimerOptions共享网页视图的选项 。 提供时, 在共享内容前显示免责对话框 。 用于: - 提醒用户共享敏感信息 - 在共享前征得用户同意 - 解释将共享的内容 - 遵守隐私监管 注意: 使用共享解析器时需要共享Subject0.1.0 (中文(简体) )
toolbarTypeToolBarType工具栏类型决定了浏览器工具栏的外观和行为 - "活动" : 显示一个简单的工具栏,只需关闭按钮并共享按钮 - "导航" : 显示带有后向按钮的完整导航工具栏 - "空白" : 不显示工具栏 - "": 带有关闭按钮的默认工具栏ToolBarType.DEFAULT0.1.0 (中文(简体) )
shareSubjectstring共享的主题文本 。 使用共享免责声明时需要 。 此文本在共享内容时将作为主题行.0.1.0 (中文(简体) )
titlestring浏览器的标题"New Window"0.1.0 (中文(简体) )
backgroundColorBackgroundColor浏览器的背景颜色BackgroundColor.BLACK0.1.0 (中文(简体) )
activeNativeNavigationForWebviewboolean如果真实, 则允许在网页视图内进行本地导航手势 。 -Android:原生后按键在webview历史中导航 - iOS:启用向后/向后导航的刷相左/右手势false (Android), true (iOS - enabled by default)
disableGoBackOnNativeApplicationboolean禁用返回本地应用程序的可能性, 用于强制用户留在网页视图中, Androidfalse
isPresentAfterPageLoadboolean在新窗口全屏中打开url是PresentAfterPageLoad:如果真实,浏览器会在加载后显示,如果错误,则浏览器会立即显示. 承诺时机: 在Android上, openWebView() 当网页视图准备控制时( 立即用于隐藏/ 即时演示, 当第一个页面加载时) 解决 webview id isPresentAfterPageLoad 实值 true) (中文(简体) ). 在iOS上,承诺一旦创建了本地网页视图,即使演示文稿被推迟,也与id解决.false0.1.0 (中文(简体) )
isInspectableboolean网页视图中的网站是否可以检查, 仅 iosfalse
isAnimatedboolean网页视图打开是否为动画, 仅限 iostrue
showReloadButtonboolean显示重新装入网页的按钮false1.0.15 (中文(简体) )
closeModalbooleanCloseModal:如果用户点击关闭按钮时显示一个真实的确认,如果错误的浏览器会立即被关闭.false1.1.0 国家
closeModalTitlestring关闭 Modal Title: 当用户点击关闭按钮时确认的标题"Close"1.1.0 国家
closeModalDescription

版本与发布记录

@capgo/inappbrowser 共发布 406 个版本,首次发布于 2022/07/17;过去 12 个月发布了 66 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
8.6.14latest2026/05/285 个月前
8.6.132026/05/245 个月前
8.6.82026/05/195 个月前
8.6.72026/05/195 个月前
8.6.62026/05/135 个月前
8.6.52026/05/115 个月前

其他发布通道:old_v6 → 6.9.38,lts-v6 → 6.15.0,next → 8.3.0-alpha.4,beta → 8.6.0-beta.1。

关于 @capgo/inappbrowser 的常见问题

@capgo/inappbrowser 是什么?

应用程序浏览器中的电容插件注意:该包已被作者标记为弃用——This package has moved to @capgo/capacitor-inappbrowser. Please install @capgo/capacitor-inappbrowser instead.

如何安装 @capgo/inappbrowser?

在项目目录运行 npm install @capgo/inappbrowser,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@capacitor/core(>=8.0.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@capgo/inappbrowser 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@capgo/inappbrowser 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@capgo/inappbrowser 可以商用吗?

@capgo/inappbrowser 使用 MPL-2.0 许可。弱 Copyleft:可以商用,也可以和闭源代码一起使用;但如果分发时修改了 MPL 授权的文件,这些文件的修改需以 MPL 开源。以上为概括,不构成法律意见,请以许可原文为准。

@capgo/inappbrowser 的下载量有多少?

根据 npm 官方下载统计,@capgo/inappbrowser 在 2026/10/09 – 2026/11/07 这 30 天内被下载 165,801 次,日均约 5,527 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@capgo/inappbrowser 还在维护吗?

最新版本 8.6.14 发布于 2026/05/28(5 个月前);至今共发布 406 个版本,其中过去 12 个月发布了 66 个;首次发布于 2022/07/17。作者已将其标记为弃用,新项目建议寻找替代方案。