原因:fullscreenchange事件會在進(jìn)入全屏和退出全屏?xí)r各觸發(fā)一次。所以全屏切換期間會觸發(fā)兩次該事件。
解決方案:
js文章來源:http://www.zghlxwxcb.cn/news/detail-724450.html
Copy code文章來源地址http://www.zghlxwxcb.cn/news/detail-724450.html
- 在監(jiān)聽fullscreenchange事件時(shí),使用變量進(jìn)行防抖處理。比如設(shè)置一個(gè)變量來記錄上一次的全屏狀態(tài),只有當(dāng)狀態(tài)真正發(fā)生改變時(shí)才執(zhí)行處理邏輯。
fullScreen(e) { let lastFullscreen = false; const isFullscreen = e.detail.fullScreen console.log('lastFullscreen:', lastFullscreen, isFullscreen) if (isFullscreen !== lastFullscreen && lastFullscreen == true) { // 狀態(tài)改變,執(zhí)行處理邏輯 if (!isFullscreen) { lastFullscreen = false; console.log('lastFullscreen:', lastFullscreen, isFullscreen) this.videoContext.requestFullScreen(); } else { lastFullscreen = true; console.log('lastFullscreen:', lastFullscreen, isFullscreen) this.videoContext.exitFullScreen(); } } },
- 使用setTimeout及清除定時(shí)器的方式防抖,只在fullscreen狀態(tài)穩(wěn)定后的一次事件中處理。
- 在微任務(wù)隊(duì)列中處理事件回調(diào),這樣可以合并連續(xù)的fullscreenchange事件。
- 根據(jù)全屏切換的場景,通過代碼直接控制只監(jiān)聽必要的全屏事件。比如只在視頻全屏?xí)r才監(jiān)聽。
到了這里,關(guān)于已解決 微信小程序uniapp使用video的時(shí)候全屏方法@fullscreenchange會執(zhí)行兩次的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!