这份文档描述的是 轻屿课表当前适配脚本可依赖的桥接能力,同时也是仓库内浏览器扩展测试工具模拟的接口集合。
如果你新增了脚本桥接能力,请同步更新本文件。
脚本里主要有两类对象:
AndroidBridge:同步、轻提示 / 完成通知window.AndroidBridgePromise:异步、带返回值 / 需要校验的数据保存
显示轻提示。
AndroidBridge.showToast('开始抓取课表');通知任务完成。
在浏览器扩展里,这会结束当前测试会话,并把本次运行得到的课程 / 时间模板 / 学期配置整理回扩展内部预览面板。 注意:这条链路必须从扩展里点击“运行当前脚本”发起;如果你只是直接在 F12 控制台运行脚本,桥接层会判定为无效测试会话。
AndroidBridge.notifyTaskCompletion();显示确认弹窗。
await window.AndroidBridgePromise.showAlert('提示', '抓取完成', '确定');显示输入框弹窗,可绑定一个脚本内校验函数名。
function validateCode(input) {
if (!input || !input.trim()) return '请输入分享码';
return false;
}
const code = await window.AndroidBridgePromise.showPrompt(
'输入分享码',
'请输入分享码',
'',
'validateCode',
);显示单选列表。
const index = await window.AndroidBridgePromise.showSingleSelection(
'选择学期',
JSON.stringify(['2024-2025-1', '2024-2025-2']),
0,
);保存课程数组。
await window.AndroidBridgePromise.saveImportedCourses(JSON.stringify(courses));保存预设节次时间。
await window.AndroidBridgePromise.savePresetTimeSlots(JSON.stringify(timeSlots));保存学期配置。
await window.AndroidBridgePromise.saveCourseConfig(JSON.stringify(config));最小必填字段:
nameteacherpositiondayweeks
普通节次课程还需要:
startSectionendSection
如果是自定义时间课程:
isCustomTime: truecustomStartTimecustomEndTime
{
"name": "高等数学",
"teacher": "张老师",
"position": "教101",
"day": 1,
"startSection": 1,
"endSection": 2,
"weeks": [1, 2, 3, 4, 5]
}{
"name": "晚自习",
"teacher": "辅导员",
"position": "教302",
"day": 7,
"isCustomTime": true,
"customStartTime": "19:00",
"customEndTime": "21:00",
"weeks": [1, 2, 3, 4]
}| 字段 | 说明 |
|---|---|
name |
课程名 |
teacher |
教师 |
position |
上课地点 |
day |
星期,通常 1-7 |
startSection / endSection |
起止节次 |
weeks |
周次数组,如 [1,2,3] |
isCustomTime |
是否自定义时间课程 |
customStartTime / customEndTime |
自定义开始/结束时间,HH:mm |
{
"number": 1,
"startTime": "08:00",
"endTime": "08:45"
}字段:
| 字段 | 说明 |
|---|---|
number |
节次编号 |
startTime |
开始时间,HH:mm |
endTime |
结束时间,HH:mm |
通常以数组形式传入:
await window.AndroidBridgePromise.savePresetTimeSlots(JSON.stringify([
{ number: 1, startTime: '08:00', endTime: '08:45' },
{ number: 2, startTime: '08:55', endTime: '09:40' },
]));当前常用字段:
semesterStartDatesemesterTotalWeeksdefaultClassDurationdefaultBreakDurationfirstDayOfWeek
{
"semesterStartDate": "2025-02-24",
"semesterTotalWeeks": 20,
"defaultClassDuration": 45,
"defaultBreakDuration": 10,
"firstDayOfWeek": 1
}如果你不传某些字段,测试工具会按当前模型补默认值:
semesterStartDate: nullsemesterTotalWeeks: 20defaultClassDuration: 45defaultBreakDuration: 10firstDayOfWeek: 1
建议大多数脚本按这个顺序写:
- 识别页面 / 获取登录态
- 抓取课程原始数据
- 转换为
courses - 如有需要,再生成
timeSlots和config - 调用
save... notifyTaskCompletion()
resources/GLOBAL_TOOLS/school.jsresources/GLOBAL_TOOLS/test.jstools/CourseImporterTestTool/school.js- 各类现有学校脚本