WordPress实现视频仅可观看一次播放后跳转 现有代码不播放1分钟后跳转如何解决
问题修复方案
原代码问题根因
- 短码参数格式错误:属性名和等号、等号和属性值之间多余的空格会导致WordPress短码解析异常,无法正确初始化播放器
- 逻辑参数错误:设置了
loop="true"循环播放属性,视频播放结束会自动重播,永远无法触发播放结束逻辑;同时未配置静音属性,当前绝大多数浏览器禁止非静音视频自动播放,直接导致视频无法正常加载播放 - 跳转逻辑不符合需求:固定1分钟延时跳转和视频播放进度完全解绑,自然会出现视频没播完就跳转的问题
修复后代码
首先调整短码参数,再替换JS逻辑为监听视频播放结束事件,同时增加本地缓存判断实现仅允许观看一次的需求:
[videojs_video url="你的视频实际地址" preload="auto" controls="false" autoplay="true" muted="true" loop="false"] <script> // 先判断用户是否已经观看过该视频 if (localStorage.getItem('video_watched') === 'yes') { // 已经看过直接跳转至目标页面 window.location.href = '你的目标落地页地址'; } else { // 监听视频播放结束事件 document.querySelector('.videojs-video').addEventListener('ended', function() { // 标记为已观看 localStorage.setItem('video_watched', 'yes'); // 播放结束跳转 window.location.href = '你的目标落地页地址'; }); } </script> <p>视频播放完毕后将自动跳转</p>
注意事项
- 如果需要显示播放控件,把
controls属性改为true即可 - 如果不需要自动播放,删除
autoplay和muted属性即可,逻辑会自动适配用户手动点击播放结束后跳转 - 若需要清空观看限制,用户清除浏览器本地存储即可重置
内容的提问来源于stack exchange,提问作者Anna340
相关产品推荐
相关产品推荐

