@@ -28,9 +28,13 @@ export function useSkipSettings(options = {}) {
2828 const skipOutroTimer = ref ( null )
2929 const lastSkipTime = ref ( 0 ) // 记录上次跳过的时间戳,用于防抖
3030
31- // 用户交互状态
32- const userSeeking = ref ( false ) // 用户是否正在拖动进度条
33- const lastUserSeekTime = ref ( 0 ) // 上次用户拖动的时间戳
31+ //// 用户交互状态
32+ const userSeeking = ref ( false )
33+ const lastUserSeekTime = ref ( 0 )
34+
35+ // 全屏状态跟踪
36+ const isFullscreenChanging = ref ( false )
37+ const lastFullscreenChangeTime = ref ( 0 ) // 上次用户拖动的时间戳
3438
3539 // 计算属性
3640 const skipEnabled = computed ( ( ) => {
@@ -119,6 +123,18 @@ export function useSkipSettings(options = {}) {
119123 return
120124 }
121125
126+ // 检查是否正在全屏切换或刚刚切换过(2秒内)
127+ if ( isFullscreenChanging . value || ( lastFullscreenChangeTime . value > 0 && now - lastFullscreenChangeTime . value < 2000 ) ) {
128+ console . log ( '正在全屏切换或刚刚切换过,跳过自动片头跳过' )
129+ return
130+ }
131+
132+ // 检查是否正在全屏切换或刚刚切换过(2秒内)
133+ if ( isFullscreenChanging . value || ( lastFullscreenChangeTime . value > 0 && now - lastFullscreenChangeTime . value < 2000 ) ) {
134+ console . log ( '正在全屏切换或刚刚切换过,跳过自动片头跳过' )
135+ return
136+ }
137+
122138 // 立即跳过模式:如果当前时间很小(小于等于1秒)且在片头跳过范围内,立即跳过
123139 if ( currentTime <= 1 && currentTime <= skipIntroSeconds . value ) {
124140 console . log ( `立即跳过片头:从 ${ currentTime } 秒跳转到 ${ skipIntroSeconds . value } 秒` )
@@ -163,6 +179,12 @@ export function useSkipSettings(options = {}) {
163179 return
164180 }
165181
182+ // 检查是否正在全屏切换或刚刚切换过(2秒内)
183+ if ( isFullscreenChanging . value || ( lastFullscreenChangeTime . value > 0 && now - lastFullscreenChangeTime . value < 2000 ) ) {
184+ console . log ( '正在全屏切换或刚刚切换过,跳过自动片头跳过' )
185+ return
186+ }
187+
166188 // 防抖:如果距离上次跳过不足1秒,则忽略(但如果是新视频,lastSkipTime为0,允许跳过)
167189 // 减少防抖时间,提高响应速度
168190 if ( lastSkipTime . value > 0 && now - lastSkipTime . value < 1000 ) {
@@ -252,6 +274,10 @@ export function useSkipSettings(options = {}) {
252274 userSeeking . value = false
253275 lastUserSeekTime . value = 0
254276
277+ // 重置全屏状态
278+ isFullscreenChanging . value = false
279+ lastFullscreenChangeTime . value = 0
280+
255281 // 清除片尾跳过定时器(如果存在)
256282 if ( skipOutroTimer . value ) {
257283 clearTimeout ( skipOutroTimer . value )
@@ -260,22 +286,39 @@ export function useSkipSettings(options = {}) {
260286 }
261287
262288 /**
263- * 标记用户开始拖动进度条
289+ * 用户开始拖动进度条
264290 */
265291 const onUserSeekStart = ( ) => {
266292 userSeeking . value = true
267293 console . log ( '用户开始拖动进度条' )
268294 }
269295
270296 /**
271- * 标记用户结束拖动进度条
297+ * 用户结束拖动进度条
272298 */
273299 const onUserSeekEnd = ( ) => {
274300 userSeeking . value = false
275301 lastUserSeekTime . value = Date . now ( )
276302 console . log ( '用户结束拖动进度条' )
277303 }
278304
305+ /**
306+ * 全屏状态开始变化
307+ */
308+ const onFullscreenChangeStart = ( ) => {
309+ isFullscreenChanging . value = true
310+ console . log ( '全屏状态开始变化' )
311+ }
312+
313+ /**
314+ * 全屏状态变化结束
315+ */
316+ const onFullscreenChangeEnd = ( ) => {
317+ isFullscreenChanging . value = false
318+ lastFullscreenChangeTime . value = Date . now ( )
319+ console . log ( '全屏状态变化结束' )
320+ }
321+
279322 /**
280323 * 初始化片头片尾设置
281324 */
@@ -338,6 +381,8 @@ export function useSkipSettings(options = {}) {
338381 closeSkipSettingsDialog,
339382 cleanup,
340383 onUserSeekStart,
341- onUserSeekEnd
384+ onUserSeekEnd,
385+ onFullscreenChangeStart,
386+ onFullscreenChangeEnd
342387 }
343388}
0 commit comments