JS浏览器插件开发教程

从阅读 API 文档到用 AI 写出第一个自动化插件

一、了解插件系统

JS浏览器支持三种插件格式,推荐使用 .jsm 开发新插件:

推荐:.jsm(MVEL)

性能最好,语法简洁,适合所有场景。预置变量与 .zdp 相同(zdWindow、scriptManager、runningScript、nextListener),新增 jsmLog 调试变量,执行速度快 10~100 倍。

.zdjs(JavaScript)

适合复杂 DOM 操作、HTTP 请求。使用 async/await 异步编码,内置 zd.reqGet/reqApi 方法。

.zdp(BeanShell)

性能较慢,仅建议已有旧脚本继续使用。新插件请使用 .jsm 替代。

快速选择

二、下载 API 文档并上传给 DeepSeek

核心思路:将 API 文档作为"知识库"上传给 AI,让它学习后根据你的需求编写插件。

1

下载 API 文档

点击下方按钮下载完整的 API 文档:

📄下载脚本开发API文档.md

2

打开 DeepSeek 聊天页面

访问 https://chat.deepseek.com 并登录你的账号。

3

上传 API 文档

点击输入框旁的附件上传按钮,选择刚才下载的 脚本开发API文档.md 文件上传。

在输入框中输入以下提示词:

请仔细阅读这份 API 文档,这是浏览器自动化应用的插件开发文档。

文档包含三种插件格式的 API:
1. .zdjs 格式 - 运行在 WebView 中,使用 JavaScript
2. .zdp 格式 - 运行在 BeanShell 解释器中,使用 Java 语法
3. .jsm 格式 - 运行在 MVEL 编译器中,使用 Java 语法,性能比 .zdp 快 10~100 倍(推荐新插件使用)

请学习并理解所有 API 方法,之后我会让你根据需求编写具体的插件。
4

确认 AI 已理解

DeepSeek 回复确认理解后,你就可以开始描述需求让它编写插件了。

三、用 AI 编写你的第一个插件

需求描述(直接发给 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("成功");
}

常用 API 速查

方法说明
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();

常用 API 速查

方法说明
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);

常用 API 速查

.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当前运行的脚本对象

四、运行插件

1

将插件文件放入设备

将编写好的 .zdjs.jsm.zdp 文件通过 USB、QQ 等方式传到手机的存储目录中。

2

在 JS浏览器中打开插件

五、常用 API 速查

API 速查已整合到上方对应格式的标签页中,请点击 .zdjs.zdp.jsm 按钮查看对应 API。

六、完整工作流总结

  1. 下载 API 文档 → 点击上方下载按钮获取文档
  2. 上传文档给 DeepSeek → 让 AI 学习 API
  3. 描述需求 → 告诉 AI 你要实现什么功能
  4. AI 生成插件 → 复制代码保存为 .zdjs、.jsm 或 .zdp 文件
  5. 传到手机 → 将文件放入手机存储
  6. 运行测试 → 在 JS浏览器中打开文件执行
  7. 迭代优化 → 根据运行结果调整代码

— 教程结束 —