H5踩坑日记(一样持续更新哈)

1,316 阅读2分钟

H5video标签播放视频相关问题(这个是我同事提出的)

1.视频自动播放

经过调研测试,IOS和安卓都可以进行自动播放,附上代码:
 // 播放视频
    playFunc(){
        var vdo = document.querySelector("#video");
        document.addEventListener("WeixinJSBridgeReady", function() {
            vdo.play();
        });
        if (
            window.navigator.userAgent.match(/MicroMessenger/i) == "MicroMessenger"
        ) {
            WeixinJSBridge.invoke("getNetworkType", {}, function(res) {
                vdo.play();
            });
        }
        vdo.play();
    }

在mounted中执行此代码即可。

2.视频上悬浮其他元素

但是,如果想在视频上悬浮其他元素,必须在video中加上这个属性:

 x5-video-player-type="h5"

如果不加上这个属性,视频播放的时候,视频会置顶在所有元素最上层,因此无法在视频上悬浮其他元素。 这里存在一个问题:IOS加上这个属性之后,没有影响,依然可以正常自动播放,但是安卓微信环境下,加上这个元素之后不可以自动播放,会黑屏无法播放。 这是由于微信内置浏览器为了节省用户流量做的限制。安卓微信环境下,只能通过点击或者滑动触发这个播放的方法,才能让视频进行正常播放。

移动端偶尔会出现ios页面右边有空白区域,安卓显示正常

将最外层的元素宽度设为100%和设置overflow-x:hidden

解析后端返回的文件流

这里在vue里面写的 但是主要功能在回调里面

    this.$ajax.post(url,{},{responseType: "blob"})
    .then(res => {
        const content = res;
        const blob = new Blob([content], {type: "application/ms-excel"});
        const fileName = item.name + ".xlsx";
        if ("download" in document.createElement("a")) {
        // 非IE下载
        const elink = document.createElement("a");
        elink.download = fileName;
        elink.style.display = "none";
        elink.href = URL.createObjectURL(blob);
        document.body.appendChild(elink);
        elink.click();
        URL.revokeObjectURL(elink.href); // 释放URL 对象
        document.body.removeChild(elink);
        } else {
            navigator.msSaveBlob(blob, fileName);
        }
 });

关于ios input输入框失焦后页面没有回滚

    let u = navigator.userAgent;
    let isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
    if (isiOS) {
        // window.scrollTo(0, 0);
        window.scrollTo(0, document.documentElement.clientHeight);
    }

将日期转换成时间戳的形式,在安卓和ios不同的系统下转正会有兼容性的问题

//安卓系统下
    Date.parse(new Date('2018-03-30 12:00:00'))
//会直接转换成时间戳的形式(简单说就是整数形式)
//ios系统下
    Date.parse(new Date('2018-03-30 12:00:00'))
//sorry,转换不了
//解决方法
//上面有判断什么操作系统
//ios系统下使用
    Date.parse(new Date('2018/03/30 12:00:00'))

有什么问题可以提出来 如果我会的话就尽量回答 或者文章中有什么错误也帮忙指出来 谢谢