HTML5调用移动浏览器相机问题


本文摘自PHP中文网,作者零到壹度,侵删。

因为浏览器和微信浏览器区别,导致直接使用capture=”camera”,浏览器会调用相机。解决方案,就是在组件加载时候,判断一下内核

代码如下

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

<template>

  <p id="info-container">

    <ul class="nav-wrapper">

      <li class="head-item">

        <p class="item-wrapper">

          <p class="left-item">头像</p>

          <p class="right-item">

            <img :src="login.avatar_url?login.avatar_url: ''"

                 class="head"

                 :onerror="errImage"

            >

            <img class="point" src="../../assets/images/mine/point.png">

          </p>

        </p>

        <!--

        这是需要样式控制input,让其定位到父集元素顶层,透明度为0

        -->

        <input type="file"

               accept="image/*"

               ref="uploadFile"

               @change="changeFileHandler"

               capture="camera"

               v-if="iswx"

        />

        <input type="file"

               accept="image/*"

               ref="uploadFile"

               @change="changeFileHandler"

               v-if="!iswx"

        />

      </li>

    </ul>

  </p></template><script>import {

  USER_DEFAULT_BASE64,

  HEAD_IMAGE_SIZE_TO_BIG

} from '../../utils/Constants'import { mapGetters, mapActions } from 'vuex'export default {

  name: 'info-container',

  computed: {

    ...mapGetters([      'getAuthLogin'

    ]),

    login () {      return this.$store.getters.getAuthLogin

    }

  },

  created () {    const agent = navigator.userAgent.toLowerCase()    this.iswx = agent.indexOf('qqbrowser') >= 0

  },

  methods: {

    ...mapActions([      'authUpdateAvatarUrl'

    ]),

    showTextHandler (text = '') {      this.$vux.toast.text(text)

    },

    changeFileHandler (e) {      const files = e.target.files      const uploadFile = this.$refs.uploadFile      const localFile = files[0]      const fileSize = localFile.size / 1024

      const fileName = localFile.name      if (fileSize > 1024 * 3) {        this.showTextHandler(HEAD_IMAGE_SIZE_TO_BIG)

      } else {        // 表单文件上传

        this.authUpdateAvatarUrl({fileName, localFile})

      }      // 延迟一段事件清除内容

      setTimeout(() => { uploadFile.value = '' }, 200)

    }

  },

  data () {   return {

      iswx: false,

      errImage: USER_DEFAULT_BASE64

    }

  }

}</script><style scoped lang="less">

    //TODO 样式</style>

相关推荐:

关于HTML5 调用用户的 照相机、相册 初步整理

H5移动端调用相机/相册

H5调用手机的摄像头拍照上传以及手机相册选取照片

以上就是HTML5调用移动浏览器相机问题的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

mui框架使用HTML5实现二维码扫描功能

HTML5如何插入可自动播放的音频(图文)

HTML5新增加的标签有哪些

HTML5能做什么

动手打造HTML5俄罗斯方块的(图文)

HTML5能干什么?详解HTML5的功能

HTML5实现眼睛移动效果的示例

HTML5视频播放的详细介绍

使用HTML5拍照示例代码介绍

h5如何做出碎片式的图片切换

更多相关阅读请进入《HTML5》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...