IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 企业微信链接适配安卓ios移动端问题汇总 -> 正文阅读

[移动开发]企业微信链接适配安卓ios移动端问题汇总

ios网页上拉下弹(橡皮筋样式)

ios在 meta标签配置viewport时要加viewport-fit=cover,防止底部黑色小横条部分出现小白边遮挡footer部分。

该问题布局可使用fixed上中下布局,内容部分使用overflow-y: auto; overflow-x: hidden;-webkit-overflow-scrolling: touch;局部滚动。

也可以使用监听器,禁止内容其他部分按钮触发滚动,内容部分绑定touchmove给一个true,监听器内判断为true不触发禁止默认事件。

使用elementui的话,弹出层要加:modal-append-to-body="false"

使用fixed 局部滑动可能会穿透导致页面卡顿无法滑动,主要原因是触发到了body层的滑动,解决:

//防止局部滚动穿透触发body部分滚动条,ios滑动卡住,
document.getElementById('scroll').addEventListener('scroll', this.handleScroll)
  },
  
    handleScroll() {
      const scrollTop = document.getElementById('scroll').scrollTop
      if (scrollTop <= 0 || scrollTop > document.getElementById('scroll').offsetHeight) {
        document.body.style.overflow = 'hidden'
      } else {
        document.body.style.overflow = 'auto'
      }
    },
.container {
  font-size: 2vh;
  background: #ffffff;
  height: 100%;
  overflow: hidden;
  position: fixed;
  top: 0;
  left: 0;
}
.header {
  position: fixed;
  z-index: 999;
  top: 0;
  left: 0;
  height: 10vh;
  width: 100vw;
}
.footer {
  height: 10vh;
  width: 100vw;
  line-height: 2.5vh;
  background: #ffffff;
  position: fixed;
  z-index: 999;
  bottom: 0;
  left: 0;
}
.main {
  width: 100vw;
  margin-top: 10vh;
  overflow-y: auto;
  overflow-x: hidden;
  -webkit-overflow-scrolling: touch;
}

监听器:我没用此方法,

<div
      class="main"
      @touchmove="$event._isScroller = true">


destroyed() {
    document.body.removeEventListener('touchmove', this.scroll, {
      passive: false,
    })
  },
  created() {
    //移动端适配ios 禁止ios浏览器上下拉回弹
    document.body.addEventListener('touchmove', this.scroll, {
      passive: false,
    })
    },
     scroll(e) {
      if (e._isScroller) return
      e.preventDefault()
    },

项目中部分页面适配移动端,其他页面不能被影响

移动端页面初始大小一倍,最大放大数随意,禁止缩放,ios注意viewport-fit=cover,安卓端注意弹起键盘时,高度变化影响布局等,viewport中设置height固定高度,ios中不需要,机型已适配,ios使用window.innerHeight会多一个小横条的高度,会引起浏览器滚动。

router.afterEach((to, form) => {
/** 移动端页面适配,最大缩放1.0 */
  let metaEl = document.querySelector('#viewportMeta')

  
  let userAgent = (typeof navigator !== 'undefined' && navigator.userAgent) || ''
  let platform = (typeof navigator !== 'undefined' && navigator.platform) || ''
  let maxTouchPoints = (typeof navigator !== 'undefined' && navigator.maxTouchPoints) || 1
  
  let isIOS =
    /\b(iPad|iPhone|iPod)(?=;)/.test(userAgent) || (platform === 'MacIntel' && maxTouchPoints > 1)
  
  if (to.name.indexOf("negotiateCase-mobileTerminal-") != -1) {
    let name = 'viewport'
    var content = `width=device-width, initial-scale=1.0,${to.name.indexOf("negotiateCase-mobileTerminal-pdf") != -1?'':'maximum-scale=1.0, user-scalable=no,'}  viewport-fit=cover`
    metaEl.setAttribute('name', name)
    metaEl.setAttribute('content', content)
  
  /** 防止移动端键盘弹出时影响高度:刚进入时高度为未缩放控制1.0时高度,所以先控制,再设置高度 */
    if (!isIOS) { 
      let height = window.innerHeight
      var content = `height=${height}, width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no`
      metaEl.setAttribute('content', content)
    }
  } else if (metaEl.getAttribute('name')) { 
      metaEl.removeAttribute('name')
      metaEl.removeAttribute('content')
      location.reload()
  }
  })

操作后样式、数据不改变
el-button点击后按钮颜色一直是灰色,失焦后变绿:点击事件内进行按钮失焦或在focus聚焦时改变内部样式为按钮颜色 .btn:focus

数据缓存,在div上绑定自定义属性,在操作数据后给属性更改值 new Date().getTime()

企业微信多个# ios转码
跳转的链接参数url不传全部url,传id,前端判断,获取url上参数方法:

 /*
      获取地址栏里指定的参数值
      用法:getUrlValue()["id"]
    */
    getUrlValue() {
      var vars = {}
      //正则:?或&一次或多次 非=和&一次或多次 = 非?和&零次或多次  多次查找,不区分大小写
      var parts = decodeURIComponent(window.location.href).replace(/[?&]+([^=&]+)=([^?&]*)/gi, function (m, key, value) {
        vars[key] = value
      })
      return vars
    },
  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-10-17 12:46:08  更:2022-10-17 12:47:54 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 23:22:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码