From 1fbe67f228f4c6b977dc5e6ac518adda5c2a60c3 Mon Sep 17 00:00:00 2001 From: unknown <18119604035@163.com> Date: Fri, 22 Sep 2023 16:46:43 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A3=80=E6=B5=8B=E8=A7=86=E9=A2=91=E9=87=8D?= =?UTF-8?q?=E5=A4=8D=E6=92=AD=E6=94=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/course/video.module.scss | 7 +++++++ src/pages/course/video.tsx | 31 ++++++++++++++++++++++++++++++ src/utils/index.ts | 12 ++++++++++++ 3 files changed, 50 insertions(+) diff --git a/src/pages/course/video.module.scss b/src/pages/course/video.module.scss index b9b23f2..17071fd 100644 --- a/src/pages/course/video.module.scss +++ b/src/pages/course/video.module.scss @@ -64,6 +64,7 @@ margin: 0 auto; border-radius: 8px; position: relative; + .alert-message { position: absolute; top: 0; @@ -80,6 +81,12 @@ font-size: 18px; color: white; z-index: 100; + .des-video { + font-size: 15px; + font-weight: 400; + color: #ffffff; + line-height: 15px; + } .alert-button { width: 200px; height: 54px; diff --git a/src/pages/course/video.tsx b/src/pages/course/video.tsx index c49117b..5f967da 100644 --- a/src/pages/course/video.tsx +++ b/src/pages/course/video.tsx @@ -5,8 +5,10 @@ import { useSelector } from "react-redux"; import { course as Course } from "../../api/index"; import { ArrowLeftOutlined } from "@ant-design/icons"; import { message } from "antd"; +import { getPlayId, savePlayId } from "../../utils"; declare const window: any; +var timer: any = null; const CoursePalyPage = () => { const navigate = useNavigate(); @@ -28,8 +30,10 @@ const CoursePalyPage = () => { const playRef = useRef(0); const watchRef = useRef(0); const totalRef = useRef(0); + const [checkPlayerStatus, setCheckPlayerStatus] = useState(false); useEffect(() => { + timer && clearInterval(timer); getCourse(); getDetail(); document.oncontextmenu = function (e) { @@ -37,7 +41,9 @@ const CoursePalyPage = () => { e = e || window.event; return false; }; + return () => { + timer && clearInterval(timer); document.oncontextmenu = function (e) { /*恢复浏览器默认右键事件*/ e = e || window.event; @@ -123,6 +129,7 @@ const CoursePalyPage = () => { (res: any) => { setPlayUrl(res.data.url); initDPlayer(res.data.url, 0, data); + savePlayId(String(params.courseId) + "-" + String(params.hourId)); } ); }; @@ -185,6 +192,7 @@ const CoursePalyPage = () => { window.player && window.player.destroy(); }); setLoading(false); + checkPlayer(); }; const playTimeUpdate = (duration: number, isEnd: boolean) => { @@ -201,6 +209,22 @@ const CoursePalyPage = () => { } }; + const checkPlayer = () => { + timer = setInterval(() => { + let playId = getPlayId(); + if ( + playId && + playId !== String(params.courseId) + "-" + String(params.hourId) + ) { + timer && clearInterval(timer); + window.player && window.player.destroy(); + setCheckPlayerStatus(true); + } else { + setCheckPlayerStatus(false); + } + }, 5000); + }; + const goNextVideo = () => { const index = totalHours.findIndex( (i: any) => i.id === Number(params.hourId) @@ -256,6 +280,13 @@ const CoursePalyPage = () => { id="meedu-player-container" style={{ borderRadius: 8 }} > + {checkPlayerStatus && ( +
+
+ 您已打开新视频,暂停本视频播放 +
+
+ )} {playendedStatus && (
{isLastpage && ( diff --git a/src/utils/index.ts b/src/utils/index.ts index 397f374..8bf5bef 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -111,3 +111,15 @@ export function isMobile() { ); return flag; } + +export function getPlayId(): string { + return window.localStorage.getItem("playedu-play-id") || ""; +} + +export function savePlayId(id: string) { + window.localStorage.setItem("playedu-play-id", id); +} + +export function clearPlayId() { + window.localStorage.removeItem("playedu-play-id"); +}