OpenCode AI e9899d2e6d
Some checks failed
Android CI Build / check (push) Has been cancelled
Android CI Build / package-apks (push) Has been cancelled
Docs Deploy / build (push) Has been cancelled
Module Market Check / Validate modules/ (push) Has been cancelled
Module Market Publish / Generate submissions.json (push) Has been cancelled
Docs Deploy / deploy (push) Has been cancelled
Initial DruksCode V2: fresh fork of web-to-app (f3b488e) with DruksCode identity
- Package rename com.webtoapp -> br.com.drukstech.codeapp
- Product rename WebToApp/web-to-app -> DruksCode/drukscode
- Design system Wta* -> Dkc*
- applicationId br.com.drukstech.codeapp (.play for gplay flavor)
- rootProject.name DruksCode
- Fresh git history (upstream kept as remote for sync)
2026-09-12 02:42:02 +02:00

39 lines
2.1 KiB
Markdown

# 扩展开发
DruksCode 在应用发布后仍可扩展。你可以添加四类扩展,它们都由同一个 `ExtensionManager` 管理,并由 WebView 在页面生命周期钩子处注入:
| 类型 | 是什么 | 适用场景 |
| --- | --- | --- |
| **[JS 模块](/zh/extensions/js-module)** | `module.json` 清单 + `main.js`(+ 可选 CSS) | 带配置 UI 和浮动面板的自定义功能 |
| **[CSS 模块](/zh/extensions/css-module)** | 纯样式覆盖(仍需 `main.js` 桩) | 主题化、重设样式、夜间模式 |
| **[油猴脚本](/zh/extensions/userscript)** | Tampermonkey/Greasemonkey 风格 `.user.js` | 移植现有油猴脚本;`GM_*` API |
| **[Chrome MV3](/zh/extensions/chrome-mv3)** | Manifest V3 Chrome 扩展 | 移植浏览器扩展;`chrome.*` API |
## 注入如何工作
四种类型都被归一化为一个内部 `ExtensionModule` 模型。运行时,`WebViewManager` 在每个模块配置的**运行时机**注入它:
| 运行时机 | 触发于 |
| --- | --- |
| `DOCUMENT_START` | `onPageStarted` |
| `DOCUMENT_END` | `onPageFinished`(DOMContentLoaded) |
| `DOCUMENT_IDLE` | 加载后(默认) |
| `CONTEXT_MENU` | 上下文菜单时 |
| `BEFORE_UNLOAD` | 卸载前 |
每个模块还带有 **URL 匹配规则**(Chrome 风格 glob 或正则),决定它在哪些页面运行。
::: warning 重要的准确性说明
有些行为与其他扩展平台的暗示不同。这些在相关页面有说明,但值得预先了解:
- **油猴脚本的 `GM_*` 函数不按 `@grant` 门控** —— 全部无条件暴露。
- **Chrome 的 `ISOLATED` 与 `MAIN` world 并非真正隔离** —— Android WebView 只有单一 JS 上下文;隔离是模拟的。
- **`GM_notification` 仅记录日志**;MV3 的"后台 service worker"是一个隐藏的 WebView,而非真正的 service worker。
:::
## 接下来去哪
- [JS 模块](/zh/extensions/js-module) —— 能力最强的原生格式。
- [油猴脚本](/zh/extensions/userscript) —— `GM_*` / `GM.*` API 参考。
- [Chrome MV3](/zh/extensions/chrome-mv3) —— 支持的 `chrome.*` 接口。
- [发布到市场](/zh/extensions/publish) —— 与社区分享 JS/CSS 模块。