uni-app 打包H5及微信开发工具公众号真机测试时video样式丢失

发布于 1周前 作者 caililin 来自 Uni-App

uni-app 打包H5及微信开发工具公众号真机测试时video样式丢失

开发环境 版本号 项目创建方式
Windows Windows 11 专业版 HBuilderX

产品分类:uniapp/H5

浏览器平台:微信内置浏览器

浏览器版本:1.06.2310080

App下载地址或H5网址:https://app.hahainter.com/index.php#/pages/sign/detail/detail?id=2&index=0


示例代码:

<template>
<view class="container">
<div class="video-wrap">
<video id="myVideo" class="video" autoplay :src="detail.url" [@timeupdate](/user/timeupdate)="bindtimeupdate"></video>
</div>
<div class="tips">视频播放完毕才计入签到成功!</div>
</view>
</template> 

<style scoped lang="scss">
.video-wrap{
width: 750rpx;
height: 420rpx;
.video,video {
width: 100%;
height: 100%;
}
}
</style>

.tips{  
    font-size: 28rpx;  
    color: #FE4747;  
    text-align: center;  
}

操作步骤:

<template>
<view class="container">
<div class="video-wrap">
<video id="myVideo" class="video" autoplay :src="detail.url" [@timeupdate](/user/timeupdate)="bindtimeupdate"></video>
</div>
<div class="tips">视频播放完毕才计入签到成功!</div>
</view>
</template> 

<style scoped lang="scss">
.video-wrap{
width: 750rpx;
height: 420rpx;
.video,video {
width: 100%;
height: 100%;
}
}
</style>

.tips{  
    font-size: 28rpx;  
    color: #FE4747;  
    text-align: center;  
}

4 回复

感谢反馈,看截图和你提供的描述,没有定位到问题。我写了简单的 demo https://gitcode.net/xiurensha5731/uni-app-questions/-/tree/q/video 构建 h5 之后也不能复现,可以补充更多信息,复现工程方便排查吗,或者私聊我给一个可访问的网址方便复现问题。


用Hbuilder X 打包H5 ,然后上传服务器,用微信浏览器打开

回复 1***@qq.com: 你尝试基础 demo 能复现问题吗,今天我试试

在使用 uni-app 开发 H5 页面并在微信开发者工具中进行真机测试时,可能会遇到 video 标签样式丢失的问题。这通常是由于微信内置浏览器对 video 标签的默认样式进行了覆盖或限制。以下是一些可能的解决方案:

1. 使用 uni-video 组件

uni-app 提供了 uni-video 组件,它是对原生 video 标签的封装,能够更好地兼容不同平台。你可以尝试使用 uni-video 组件来替代原生的 video 标签。

<template>
  <uni-video :src="videoSrc" controls></uni-video>
</template>

<script>
export default {
  data() {
    return {
      videoSrc: 'https://www.example.com/video.mp4'
    };
  }
};
</script>

2. 自定义 video 样式

如果你仍然希望使用原生的 video 标签,可以尝试通过 CSS 自定义样式。微信内置浏览器可能会覆盖默认样式,因此你需要手动设置 video 标签的样式。

<template>
  <video :src="videoSrc" controls class="custom-video"></video>
</template>

<script>
export default {
  data() {
    return {
      videoSrc: 'https://www.example.com/video.mp4'
    };
  }
};
</script>

<style scoped>
.custom-video {
  width: 100%;
  height: auto;
  object-fit: cover; /* 根据需要调整 */
  border-radius: 8px; /* 根据需要调整 */
}
</style>

3. 使用 poster 属性

在微信内置浏览器中,video 标签的封面图(poster)可能会影响样式的显示。你可以尝试设置 poster 属性来确保封面图正常显示。

<template>
  <video :src="videoSrc" :poster="posterSrc" controls></video>
</template>

<script>
export default {
  data() {
    return {
      videoSrc: 'https://www.example.com/video.mp4',
      posterSrc: 'https://www.example.com/poster.jpg'
    };
  }
};
</script>

4. 检查微信开发者工具的设置

在微信开发者工具中,确保你使用的是最新的版本,并且检查是否有任何设置可能影响 video 标签的显示。你可以尝试清除缓存或重新编译项目。

5. 使用 wx.createVideoContext

如果你在微信小程序环境中使用 video 标签,可以考虑使用 wx.createVideoContext 来控制视频播放。虽然这主要适用于小程序,但在某些情况下可能对 H5 也有帮助。

const videoContext = wx.createVideoContext('myVideo');
videoContext.play();

6. 使用 iframe 嵌入视频

如果以上方法都无法解决问题,你可以考虑使用 iframe 嵌入视频。这种方法可以绕过微信内置浏览器对 video 标签的限制。

<template>
  <iframe :src="videoSrc" frameborder="0" allowfullscreen></iframe>
</template>

<script>
export default {
  data() {
    return {
      videoSrc: 'https://www.example.com/video.mp4'
    };
  }
};
</script>

7. 使用第三方视频播放器

如果原生 video 标签在微信内置浏览器中表现不佳,你可以考虑使用第三方视频播放器库,如 video.jsplyr。这些库通常提供了更好的兼容性和自定义选项。

npm install video.js
<template>
  <div>
    <video id="my-video" class="video-js" controls preload="auto" width="640" height="264">
      <source :src="videoSrc" type="video/mp4">
    </video>
  </div>
</template>

<script>
import videojs from 'video.js';
import 'video.js/dist/video-js.css';

export default {
  data() {
    return {
      videoSrc: 'https://www.example.com/video.mp4'
    };
  },
  mounted() {
    videojs('my-video');
  }
};
</script>
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!