From 1b1e9b8b7697b89f0f5c2aef28aff064d42db606 Mon Sep 17 00:00:00 2001 From: enncy <877526278@qq.com> Date: Sun, 23 Apr 2023 16:14:30 +0800 Subject: [PATCH] =?UTF-8?q?fix(script):=20=E6=96=B0=E5=A2=9E=E8=B6=85?= =?UTF-8?q?=E6=98=9F=E8=A7=86=E9=A2=91=E5=8A=A0=E8=BD=BD=E5=A4=B1=E8=B4=A5?= =?UTF-8?q?=E6=A3=80=E6=B5=8B=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/scripts/src/projects/cx.ts | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/packages/scripts/src/projects/cx.ts b/packages/scripts/src/projects/cx.ts index a11ee327..ce0a87fb 100644 --- a/packages/scripts/src/projects/cx.ts +++ b/packages/scripts/src/projects/cx.ts @@ -140,6 +140,11 @@ export const CXProject = Project.create({ attrs: { type: 'checkbox' }, defaultValue: true }, + reloadVideoWhenError: { + label: '视频加载错误时自动刷新', + attrs: { type: 'checkbox' }, + defaultValue: false + }, /** * * 开启的任务点 @@ -1144,6 +1149,7 @@ function searchJob( playbackRate: number; volume: number; workOptions: CommonWorkOptions; + reloadVideoWhenError: boolean; }, searchedJobs: Job[] ): Job | undefined { @@ -1257,7 +1263,11 @@ export function fixedVideoProgress() { /** * 播放视频和音频 */ -async function mediaTask(setting: { playbackRate: number; volume: number }, media: HTMLMediaElement, doc: Document) { +async function mediaTask( + setting: { playbackRate: number; volume: number; reloadVideoWhenError: boolean }, + media: HTMLMediaElement, + doc: Document +) { const { playbackRate = 1, volume = 0 } = setting; // @ts-ignore @@ -1275,6 +1285,20 @@ async function mediaTask(setting: { playbackRate: number; volume: number }, medi // 固定视频进度 fixedVideoProgress(); + // eslint-disable-next-line no-undef + let reloadInterval: NodeJS.Timer; + + if (setting.reloadVideoWhenError) { + reloadInterval = setInterval(() => { + if (doc.documentElement.innerText.includes('网络错误导致视频下载中途失败')) { + $console.error('视频加载失败,即将刷新页面'); + setTimeout(() => { + location.reload(); + }, 3000); + } + }, 5000); + } + /** * 视频播放 */ @@ -1292,6 +1316,7 @@ async function mediaTask(setting: { playbackRate: number; volume: number }, medi media.addEventListener('ended', () => { $console.log('视频播放完毕'); media.removeEventListener('pause', playFunction); + clearInterval(reloadInterval); resolve(); });