开发者社区> 问答> 正文

uniapp中使用webview内嵌网页来使用视频点播功能,在axios请求后webview白屏

uniapp中使用webview内嵌网页来使用视频点播功能,在axios请求后webview白屏,但是只要把palyauth vid直接写上就能正常显示出来,这个该怎么解决呢

展开
收起
游客lukzbfsvw3jkg 2024-02-06 16:48:43 123 0
2 条回答
写回答
取消 提交回答
  • 问题已经解决了,应该就是内嵌网页导致的数据异步,在挂载后里面获取url参数再进行阿里云视频实例化会显示不出来,需要直接在script内部获取,这样就能显示了

    2024-02-28 17:15:13
    赞同 展开评论 打赏
  • 在 UniApp 中使用 <web-view> 组件内嵌网页实现视频点播功能时,若在 axios 请求后 webview 出现白屏,但将 playauth 或 vid 直接写入就能正常播放,这可能是由于动态请求数据后传递给内嵌网页出现问题,或者内嵌网页未能正确处理异步请求的结果。

    解决此类问题可以考虑以下几个方面:

    1. 确保请求成功并正确赋值

      • 检查 Axios 请求是否成功获取到了 playauth 或 vid 数据,并将其正确绑定到内嵌网页所需的参数上。
      • 在前端 Vue 代码中添加相应的错误处理逻辑,确保请求出错时能够捕获异常并给出提示。
    2. 数据传递时机

      • 确保在 <web-view> 组件加载完成之后再进行数据请求,并在请求完成后更新内嵌网页的 URL 或传递参数。
      • 可以监听 <web-view>onLoad 事件,确保其加载完毕后再执行数据请求。
    3. URL 构造

      • 检查动态构造的带有 playauth 或 vid 的 URL 是否格式正确,包括查询字符串的拼接等细节。
    4. 内嵌网页处理逻辑

      • 确保内嵌的网页能够正确处理动态传入的 playauth 或 vid 参数,即使这些参数是在页面加载后才传递过来的。
      • 如果内嵌网页依赖 JavaScript 进行渲染,确保这部分脚本能够识别并响应这些动态参数的变化。
    5. 缓存问题

      • 若是因为缓存问题导致旧的无授权页面被展示,可以在请求视频详情时增加随机参数或者时间戳防止浏览器缓存。

    示例代码片段:

    // 假设 this.videoInfo 是从 Axios 请求得到的包含 playauth 或 vid 的对象
    async getData() {
      try {
        const response = await axios.get('your-api-url');
        this.videoInfo = response.data;
        // 更新 webview 的 src 属性
        this.webViewSrc = `your-video-player-url?playauth=${this.videoInfo.playauth}`;
      } catch (error) {
        console.error('Failed to fetch video info', error);
        // 显示错误提示或处理错误状态
      }
    }
    
    // 在组件中
    <web-view ref="webView" :src="webViewSrc" @load="onWebViewLoad"></web-view>
    
    methods: {
      onWebViewLoad() {
        if (!this.videoInfo.playauth) {
          this.getData();
        }
      },
    }
    
    2024-02-12 11:48:01
    赞同 2 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
互联网音视频点播业务云上实践 立即下载
《VoD问题排查与实战手册》 立即下载
低代码开发师(初级)实战教程 立即下载