UNPKG

rerumaccusamus

Version:

The meta-framework suite designed from scratch for frontend-focused modern web development.

67 lines (52 loc) 1.56 kB
--- sidebar_position: 4 --- # webview 注册服务 在 webview 中注册服务主要是给父窗口进行访问和使用的。 ## 注册服务 - 定义服务 ```ts title='electron/services/index.ts(主进程)' export const getCurrentPageLocation = () => { return window.location.href; }; ``` - 注册服务 ```ts title="xx/xx.tsx(webview 进程)" import webviewBridge from '@modern-js/runtime/electron-webview'; import * as services from './services'; webviewBridge.registerServices(services); ``` ## 渲染进程中访问 首先,为了能和 webview 做通信和管理,我们首先要将 webview 管理起来。 ### 管理 webview 我们给每一个 webview 标签都添加一个唯一的 ID。如下示例,增加:`id="webview1"`: ```ts title="xx/xx.tsx(渲染进程)" <webview src={ "https://www.baidu.com" } id="webview1" nodeintegration="true" > ``` 给 webview 注册到`webviewService`中,便于通信。 ```ts title="xx/xx.tsx(渲染进程)" // 渲染进程中 import { webviewService } from '@modern-js/runtime/electron-render'; ... webviewService.addWebview('webview1'); ``` :::tip 提示 - 参数即为 webview ID。 ::: ### 访问 webview 的服务 ```ts title="xx/xx.tsx(渲染进程)" // 渲染进程中 import { webviewService } from '@modern-js/runtime/electron-render'; ... // 访问 webview1 的服务 getCurrentPageLocation webviewService.callWebview('webview1', 'getCurrentPageLocation'); ``` :::tip 提示 只有被 `webviewService.addWebview` 的 webview 服务才可以调用。 :::