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调用移动浏览器相机问题的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

h5前端开发是什么

用h5和css3制作全屏背景轮换播放教程

移动端HTML5列表的制作方法

关于h5的事件属性详解

HTML5打开本地app应用的示例代码

HTML5仿amd9官网酷炫的下载引导页动画特效的示例代码

制作动态视觉差背景(h5)的方法

HTML5盒子模型的使用方法

HTML5实践-使用css装饰图片画廊的代码分享(二)

详解h5非常重要的28个新特性,新技巧和新技术

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




打赏

取消

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

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

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

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

评论

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