uniapp打包的H5,在系统自带的浏览器上没问题,国内浏览器video组件会被拦截,操作按钮会有下载功能

失败一:video组件的各种方法没法实现,用canvas实现,国内浏览器黑屏

这个我之前想的是给他转一下形式,走个迂回路线,但是,不愧是大浏览器,防的死死的~

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>HTML5-Video播放视频,canvas绘制视频</title>
    </head>
    <body>
        <p>左侧为HTML5-video标签播放的视频,右侧为canvas绘制的视频</p><video id="myvideo" controls width="270" autoplay="autoplay" muted>
            <source src="https://www.runoob.com/try/demo_source/movie.mp4" type='video/mp4'>
        </video>
        <canvas id="myCanvas" width="270" height="135" style="border:1px solid #d3d3d3;">Your browser does not
            support the HTML5 canvas tag.
        </canvas>
        <script>
            var v = document.getElementById("myvideo");
            var c = document.getElementById("myCanvas");
            ctx = c.getContext(
                '2d'
            ); // 每 20 毫秒,代码就会绘制视频的当前帧
            v.addEventListener('play', function() { //播放
                var i = window.setInterval(function() { ctx.drawImage(v, 0, 0, 270, 135); }, 20);
            }, false);
            v.addEventListener('pause', function() { //暂停
                window.clearInterval(i);
            }, false);
            v.addEventListener('ended', function() { //结束
                clearInterval(i);
            }, false);


        </script>
    </body>
</html>

其实最后我并没有办法解决这个问题,网上查阅了很多资料,有说联系浏览器的,我们这个就是不出名的小软件,根本搭不上那条线,可能你在操作的时候发现百度浏览器好了,但是还有夸克浏览器等,最后经过项目组沟通,选择只允许在微信浏览器访问,这样问题就好解决多了~

其中可能会有一个小问题,如果你是在项目onLaunch的时候做限制,让他判断是否是浏览器环境然后其他逻辑,在百度浏览器没问题,夸克非也,很惊喜呦~

这里是我最后的处理,代码不是全的,重点是‘ 只在微信内置浏览器运行’这里的内容,意思是最好放到请求中去,这样能更好的规避没发现的各种神奇的浏览器~

return new Promise(function (resolve, reject) {
    // 只在微信内置浏览器运行
    var useragent = navigator.userAgent.toLowerCase();
    if (useragent.indexOf('micromessenger') === -1) {
      // micromessenger微信独有标识
      var opened = window.open('about:blank', '_self');
      opened.opener = null;
      opened.close();
      window.location.href = '';
      return alert('请在微信客户端访问本页面');
    }
    clearTimeout(ToastBox);
    ToastBox = setTimeout(function () {
      //当接口返回的时间小于300ms不显示加载框优化用户体验
      uni.showLoading({
        title: '加载中'
      });
    }, 300);

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值