ios web input.onchange 不执行

ios web input.onchange 不执行,第1张

今天做 文件上传处理的时候发现两个问题:

input.onchange ios web 代码不执行有异常,其他端都是好的;检查代码发现以:参数 event  ios web 拿不到文件相关属性:可改用下面方式获得
input.onchange = async(event) => {
  //以前文件:event 中获取 发现在 ios web 通过打印发现中 event 没有参数,ios拿不到文件相关属性
  //const file= event.path[0].files[0] 

  //这种方式 在ios web  和 android web 都能使用
  const file= input.files[0]
})

input.onchange  偶尔不执行,ios web 会有这种现象,android web  pc web 都没问题
//input.onchange 在 ios web 中会出现 偶尔无法执行的问题
//input.onchange = async(event) => {

//}


//这里需要替换成 这种方式 能兼容ios android  web 
input.addEventListener('change', async(event) => {
  // 兼容 IOS 浏览器
  const localFile = input.files[0]
  const tempSize = localFile.size
})
input.click()

完整的代码:

async files() {

  const input = document.createElement('input')
  const isExit = document.getElementById('inputFile')

  if (!isExit) {
    input.type = 'file'
    input.accept = toolManager.uploadType//'.doc,.docx,.xlsx,.xls,.pdf'
    input.name = 'inputData'
    input.id = 'inputFile'
    input.style.display = 'none'
    this.$refs.input1.$el.appendChild(input)//动态添加 dom 节点

    // 兼容 IOS 浏览器
    input.addEventListener('change', async(event) => {
      if (input.files && input.files.length === 0) {
        return
      }
      const localFile = input.files[0]
      const tempSize = localFile.size
      const size = tempSize / 1024 / 1024
      if (size > 5) {
        uni.showModal({
          content: 'Please upload a file no more than 5M!',
          confirmText: 'Confirm',
          showCancel: false
        })
        return
      }
      // 拿到文件上传 alioss
      const resoult = await aliOssHelper.aliOssUploadH5({
        file: localFile,
        size: localFile.size
      })
      if (resoult && resoult.code === 200) {
        this.$emit('fileUploadInfo', resoult)
      }
    })
  }
  input.click() 
},

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/997108.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存