从阅读 API 文档到用 AI 写出第一个自动化插件
JS浏览器支持三种插件格式,推荐使用 .jsm 开发新插件:
性能最好,语法简洁,适合所有场景。预置变量与 .zdp 相同(zdWindow、scriptManager、runningScript、nextListener),新增 jsmLog 调试变量,执行速度快 10~100 倍。
适合复杂 DOM 操作、HTTP 请求。使用 async/await 异步编码,内置 zd.reqGet/reqApi 方法。
性能较慢,仅建议已有旧脚本继续使用。新插件请使用 .jsm 替代。
核心思路:将 API 文档作为"知识库"上传给 AI,让它学习后根据你的需求编写插件。
打开 DeepSeek 聊天页面
访问 https://chat.deepseek.com 并登录你的账号。
上传 API 文档
点击输入框旁的附件上传按钮,选择刚才下载的 脚本开发API文档.md 文件上传。
在输入框中输入以下提示词:
请仔细阅读这份 API 文档,这是浏览器自动化应用的插件开发文档。
文档包含三种插件格式的 API:
1. .zdjs 格式 - 运行在 WebView 中,使用 JavaScript
2. .zdp 格式 - 运行在 BeanShell 解释器中,使用 Java 语法
3. .jsm 格式 - 运行在 MVEL 编译器中,使用 Java 语法,性能比 .zdp 快 10~100 倍(推荐新插件使用)
请学习并理解所有 API 方法,之后我会让你根据需求编写具体的插件。
确认 AI 已理解
DeepSeek 回复确认理解后,你就可以开始描述需求让它编写插件了。
需求描述(直接发给 DeepSeek):
请根据 API 文档,帮我写一个插件,实现:进入网站 baidu.cn 搜索"js浏览器"
AI 生成的 .zdjs 插件代码:
// 百度搜索插件 - baidu_search.zdjs
// 功能:自动在百度搜索指定关键词
// 运行引擎:WebView + JavaScript
async function main(args) {
var keyword = "js浏览器";
var url = "https://www.baidu.com/s?wd=" + encodeURIComponent(keyword);
await zd.goto(url);
zd.setPlugState("已搜索");
ZDJSApi.finish("成功");
}
| 方法 | 说明 |
|---|---|
await zd.goto(url) | 导航到指定 URL 并等待完成 |
await zd.clickText(text) | 点击页面上的文字并等待完成 |
await zd.runScript(script) | 运行一个脚本并等待结果 |
await zd.reqGet(url) | GET 请求,返回页面 HTML |
await zd.reqBase64(url) | GET 请求,返回 Base64 编码结果 |
await zd.reqApi(option) | HTTP 请求,返回 JSON 对象 |
zd.getDoc() | 获取页面 DOM(不需要 await) |
zd.setDoc(doc) | 替换页面 HTML |
zd.getUrl() | 获取当前 URL |
zd.getTitle() | 获取当前页面标题 |
zd.getWindowName() | 获取窗口名称 |
zd.setPlugState(str) | 更新状态显示文本 |
zd.getCurrentWindow() | 获取当前窗口句柄 |
zd.getShowingWindow() | 获取可见窗口句柄 |
zd.getWindows() | 获取所有窗口句柄数组 |
ZDJSApi.finish(str) | 结束插件执行 |
ZDJSApi.getHtml() | 获取页面 HTML 源码 |
ZDJSApi.setHtml(html) | 设置页面 HTML |
ZDJSApi.getTitle() | 获取页面标题 |
ZDJSApi.getUrl() | 获取页面 URL |
ZDJSApi.getRunArgsJSON() | 获取运行参数(JSON 数组字符串) |
ZDJSApi.setPlugState(str) | 更新状态文本 |
AI 生成的 .zdp 插件代码:
// 百度搜索插件 - baidu_search.zdp
// 功能:自动在百度搜索指定关键词
// 运行引擎:BeanShell 解释器(Java 语法)
zdWindow.loadUrl("https://www.baidu.com/s?wd=js%E6%B5%8F%E8%A7%88%E5%99%A8");
scriptManager.pause();
| 方法 | 说明 |
|---|---|
zdWindow.loadUrl(url) | 加载 URL |
zdWindow.loadUrl(url, nextListener) | 加载 URL 并等待完成 |
zdWindow.post(url, params) | POST 请求 |
zdWindow.post(url, params, nextListener) | POST 请求并等待完成 |
zdWindow.getUrl() | 获取当前 URL |
zdWindow.getTitle() | 获取窗口标题 |
zdWindow.getHomeUrl() | 获取首页 URL |
zdWindow.getNowPage() | 获取当前页面对象 |
zdWindow.getNowPage().getHtml() | 获取页面 HTML |
zdWindow.getNowPage().getDoc() | 获取页面 DOM 文档 |
zdWindow.getNowPage().setDoc(doc) | 替换页面 HTML |
zdWindow.getNowPage().getTitle() | 获取页面标题 |
zdWindow.getNowPage().getUrl() | 获取页面 URL |
scriptManager.pause() | 暂停执行 |
scriptManager.resume() | 恢复执行 |
scriptManager.stopRunning() | 停止执行 |
scriptManager.add(script) | 添加脚本到列表 |
scriptManager.size() | 获取脚本数量 |
runningScript | 当前运行的脚本对象 |
AI 生成的 .jsm 插件代码:
// 百度搜索插件 - baidu_search.jsm
// 功能:自动在百度搜索指定关键词
// 运行引擎:MVEL 编译器(性能比 .zdp 快 10~100 倍)
zdWindow.loadUrl("https://www.baidu.cn", nextListener);
.jsm 与 .zdp 的 API 完全一致,但 .jsm 基于 MVEL 编译器,性能更好。
| 方法 | 说明 |
|---|---|
zdWindow.loadUrl(url, nextListener) | 加载 URL 并等待完成(推荐) |
zdWindow.loadUrl(url) | 加载 URL(不等待) |
zdWindow.post(url, params, nextListener) | POST 请求并等待完成 |
zdWindow.post(url, params) | POST 请求(不等待) |
zdWindow.getUrl() | 获取当前 URL |
zdWindow.getTitle() | 获取窗口标题 |
zdWindow.getHomeUrl() | 获取首页 URL |
zdWindow.getNowPage() | 获取当前页面对象 |
zdWindow.getNowPage().getHtml() | 获取页面 HTML |
zdWindow.getNowPage().getDoc() | 获取页面 DOM 文档 |
zdWindow.getNowPage().setDoc(doc) | 替换页面 HTML |
zdWindow.getNowPage().getTitle() | 获取页面标题 |
scriptManager.pause() | 暂停执行 |
scriptManager.resume() | 恢复执行 |
scriptManager.stopRunning() | 停止执行 |
scriptManager.add(script) | 添加脚本到列表 |
scriptManager.size() | 获取脚本数量 |
nextListener | 加载完成回调,传入 loadUrl/post |
runningScript | 当前运行的脚本对象 |
将插件文件放入设备
将编写好的 .zdjs、.jsm 或 .zdp 文件通过 USB、QQ 等方式传到手机的存储目录中。
在 JS浏览器中打开插件
API 速查已整合到上方对应格式的标签页中,请点击 .zdjs、.zdp 或 .jsm 按钮查看对应 API。
— 教程结束 —