mpvue video的部分事件作为组件(components)的时候在安卓手机上无法被监听到控制台输出Invoke event handleProxy in page: ,PC和IOS却是好的。

wz3gfoph  于 22天前  发布在  iOS
关注(0)|答案(8)|浏览(47)

[扼要问题描述]

**mpvue 版本号:^2.0.0

[ mpvue@x.x.x ]

最小化复现代码:
component:
<video @play="play" @Pause="pause" @timeupdate="setProgress">
page:

[建议提供最小化可运行的代码:附件或文本代码]

// 示例代码:

问题复现步骤:
在这些事件的监听函数中console.log,用安卓真机调试,发现并没有打出日志,而是输出Invoke event handleProxy in page:,断点发现并没有进入事件监听函数,IOS是OK的。

  1. [第一步]
  2. [第二步]
  3. [其它...]

观察到的表现:

[在这里描述观察到的表现]

截图或动态图:

![复现步骤截图或gif图片](图片的 url)

wlwcrazw

wlwcrazw1#

补充一下,以非组件的形式加载是OK的,做成组件之后监听timeupdate事件始终进不去断点处

oknrviil

oknrviil2#

timeupdate事件不可以别的可以

g0czyy6m

g0czyy6m3#

@love999262 可以的话麻烦贴下相关代码,我们验证作为组件引入是可以监听到事件的

xnifntxz

xnifntxz4#

@love999262 可以的话麻烦贴下相关代码,我们验证作为组件引入是可以监听到事件的

可以,晚些时候我写个demo,主要是安卓手机(已验证小米10.2,其它不知)的video timeupdate事件无法触发,在开发者工具里是可以触发的。需要真机调试。

ippsafx7

ippsafx75#

抱歉久等,以下是代码示例,需要在安卓真机中打印log.
player.js

<template>
  <div>
    <video @tap="t" @play="p" @pause="pa" @timeupdate="setProgress" src="https://www.w3schools.com/html/mov_bbb.mp4"></video>
    <!-- <video @tap="t" @play="p" @pause="pa" @timeupdate="setProgress" src="http://10.5.193.54/cdn/Small_video/20181226/06/a4/2c040e6396a4f7eb889603d740b10b39.mp4?dis_k=2527a5b237bcecff2d6f0e404fc0c8a77&dis_t=1555482908&dis_dz=CT-ShangHai_ofc_IOCP&dis_st=1&src=iqiyi.com&uuid=65e30cfd-5cb6c91c-af&z=iocp_shanghai_ofc_ct"></video> -->
  </div>
</template>

<script>

export default {
  created () {
    // this.initCtx();
  },
  mounted() {
  },
  data () {
    return {
    }
  },
  components: {
  },
  computed: {
  },
  methods: {
    setProgress(e) {
      console.log('setProgresssssssssss', e)
    },
    p(e) {
      console.log('playyyyyyyyyyyyyyyyy', e)
    },
    pa(e) {
      console.log('pauseeeeeeeeeeeeee', e)
    },
    t() {
      console.log('tappppppp');
    },
    loaded (e) {
      this.width = e.mp.detail.width;
      this.height = e.mp.detail.height;
    },
  }
}
</script>

<style scoped>
.wrap {
  width: 500rpx;
  height: 500rpx;
  position: absolute;
  top: 10%;
  left: 10%;
  z-index: 999;
  background: #dadada;
  overflow: hidden;
}
.native {
  top: 50%;
  position: relative;
}
image {
  position: absolute;
  transform-origin: 50% 50%;
  /* display: none; */
}
canvas {
  width: 800rpx;
  height: 500rpx;
}
.btn {
  width: 150rpx;
  height: 100rpx;
  top: 1000rpx;
  position: absolute;
  text-align: center;
  line-height: 100rpx;
  border: 1px solid #000;
}
</style>

index.js

<template>
  <Player></Player>
</template>

<script>
  import Player from '@/components/player'
  export default {
    created() {},
    mounted() {
    },
    data() {
      return {
      }
    },
    components: {
      Player
    },
    computed: {
    },
    methods: {
    }
  }
</script>

<style scoped>
  canvas {
    position: absolute;
    visibility: hidden;
    background: #dadada;
    /* width: 800rpx; */
    /* height: 500rpx; */
  }
  .a {
    width: 100px;
    height: 100px;
    border: 1px solid;
  }
</style>
{
  "name": "mini-program-demo",
  "version": "1.0.0",
  "mpvueTemplateProjectVersion": "0.1.0",
  "description": "A Mpvue project",
  "author": "Sun Yuguang <sunyuguang@qiyi.com>",
  "private": true,
  "scripts": {
    "dev:wx": "node build/dev-server.js wx",
    "start:wx": "npm run dev:wx",
    "build:wx": "node build/build.js wx",
    "dev:swan": "node build/dev-server.js swan",
    "start:swan": "npm run dev:swan",
    "build:swan": "node build/build.js swan",
    "dev:tt": "node build/dev-server.js tt",
    "start:tt": "npm run dev:tt",
    "build:tt": "node build/build.js tt",
    "dev:my": "node build/dev-server.js my",
    "start:my": "npm run dev:my",
    "build:my": "node build/build.js my",
    "dev": "node build/dev-server.js wx",
    "start": "npm run dev",
    "build": "node build/build.js wx",
    "lint": "eslint --ext .js,.vue src"
  },
  "dependencies": {
    "mpvue": "^2.0.0",
    "vuex": "^3.0.1"
  },
  "devDependencies": {
    "babel-core": "^6.22.1",
    "babel-loader": "^7.1.1",
    "babel-plugin-transform-runtime": "^6.22.0",
    "babel-preset-env": "^1.3.2",
    "babel-preset-stage-2": "^6.22.0",
    "babel-register": "^6.22.0",
    "chalk": "^2.4.0",
    "connect-history-api-fallback": "^1.3.0",
    "copy-webpack-plugin": "^4.5.1",
    "css-loader": "^0.28.11",
    "cssnano": "^3.10.0",
    "eslint": "^4.19.1",
    "eslint-friendly-formatter": "^4.0.1",
    "eslint-loader": "^2.0.0",
    "eslint-plugin-import": "^2.11.0",
    "eslint-plugin-node": "^6.0.1",
    "eslint-plugin-html": "^4.0.3",
    "eslint-config-standard": "^11.0.0",
    "eslint-plugin-promise": "^3.4.0",
    "eslint-plugin-standard": "^3.0.1",
    "babel-eslint": "^8.2.3",
    "eventsource-polyfill": "^0.9.6",
    "express": "^4.16.3",
    "extract-text-webpack-plugin": "^3.0.2",
    "file-loader": "^1.1.11",
    "friendly-errors-webpack-plugin": "^1.7.0",
    "glob": "^7.1.2",
    "html-webpack-plugin": "^3.2.0",
    "http-proxy-middleware": "^0.18.0",
    "optimize-css-assets-webpack-plugin": "^3.2.0",
    "ora": "^2.0.0",
    "portfinder": "^1.0.13",
    "postcss-loader": "^2.1.4",
    "postcss-mpvue-wxss": "^1.0.0",
    "prettier": "~1.12.1",
    "px2rpx-loader": "^0.1.10",
    "relative": "^3.0.2",
    "rimraf": "^2.6.0",
    "semver": "^5.3.0",
    "shelljs": "^0.8.1",
    "uglifyjs-webpack-plugin": "^1.2.5",
    "url-loader": "^1.0.1",
    "vue-style-loader": "^4.1.0",
    "mkdirp": "^0.5.1",
    "mpvue-loader": "^2.0.0",
    "mpvue-template-compiler": "^2.0.0",
    "mpvue-webpack-target": "^1.0.3",
    "webpack-mpvue-vendor-plugin": "^2.0.0",
    "webpack-mpvue-asset-plugin": "^2.0.0",
    "webpack-bundle-analyzer": "^2.2.1",
    "webpack-dev-middleware-hard-disk": "^1.12.0",
    "webpack-merge": "^4.1.0",
    "webpack": "^3.11.0"
  },
  "engines": {
    "node": ">= 4.0.0",
    "npm": ">= 3.0.0"
  },
  "browserslist": [
    "> 1%",
    "last 2 versions",
    "not ie <= 8"
  ]
}

把player组件引入index即可

v9tzhpje

v9tzhpje7#

@love999262 已复现问题,我们正在跟进

qqrboqgw

qqrboqgw8#

@love999262 mpvue事件触发依赖小程序dom属性中的data-comkey,这个值在安卓中,如果是基于数据绑定的话,timeupdate事件对象就会丢失(小程序本身的事件),我们已经向微信方提出了咨询,请关注后续进展

相关问题