feat(vap播放组件): 加了一层底层 video 强制设置:显式写入 video.playsInline = true、playsinline、webkit-playsinline、x5-playsinline

This commit is contained in:
hzj 2026-05-01 21:23:55 +08:00
parent 287e48174e
commit 082d973f13

View File

@ -96,6 +96,27 @@ let playToken = 0
const teleportToBody = computed(() => props.mode === 'overlay')
const resolvedSrc = computed(() => resolveProtectedAssetUrl(props.src))
function enforceVideoPlaybackAttributes(video, shouldMute) {
if (!video) {
return
}
video.playsInline = true
video.setAttribute('playsinline', '')
video.setAttribute('webkit-playsinline', '')
video.setAttribute('x5-playsinline', '')
if (shouldMute) {
video.muted = true
video.defaultMuted = true
video.volume = 0
video.setAttribute('muted', '')
} else {
video.defaultMuted = false
video.removeAttribute('muted')
}
}
function destroyPlayer() {
if (player) {
player.destroy()
@ -177,6 +198,14 @@ async function startPlay() {
...props.vapData,
})
enforceVideoPlaybackAttributes(player?.video, props.mute)
player?.video?.addEventListener('loadedmetadata', () => {
enforceVideoPlaybackAttributes(player?.video, props.mute)
})
player?.video?.addEventListener('canplay', () => {
enforceVideoPlaybackAttributes(player?.video, props.mute)
})
player.on('ended', handleEnded)
player.on('playing', () => {
loading.value = false