做项目碰到的一些安卓与ios的不兼容(以及vue项目中安卓和ios的环境判断),做个记录

vue环境下设置项目的默认字体
<script setup>
import { ref, reactive, onMounted } from "vue";
const fontFamilyType = ref(""); // 字体

// 判断安卓和ios环境
function isAndroid() {
  const userAgent = window.navigator.userAgent.toLowerCase();
  return userAgent.indexOf("android") > -1;
}
function isiOS() {
  const userAgent = window.navigator.userAgent.toLowerCase();
  return /iphone|ipad|ipod|ios/.test(userAgent);
}

onMounted(() => {
  getData();
  if (isAndroid()) {
    console.log("安卓环境");
    fontFamilyType.value = "normal";
  } else if (isiOS()) {
    console.log("苹果环境");
    fontFamilyType.value =
      '-apple-system, BlinkMacSystemFont, "San Francisco", "Segoe UI", Roboto, Helvetica, Arial, sans-serif';
  } else {
    console.log("其他环境");
    fontFamilyType.value = "normal";
  }
});
</script>

<template>
  <div :style="{ fontFamily: fontFamilyType }">
    Calories(kcal)
  </div>
</template>

<style scoped lang="less"></style>
屏幕截图(html-to-image)
// 这里只做js部分(vue3使用)
	import * as htmlToImage from 'html-to-image';
	let imgcanvas = ref('') // 图片标签img的src指向
	const captureScreen =() => {
		// 截图的容器
		var target = document.querySelector('.container')
		setTimeout(async ()=>{
			// 下面的await在安卓和H5上,只需要执行一次,拿到地址即可
			// 在苹果设备上需要最低执行三次才能拿到地址渲染出完整图片(做项目遇到的坑,前两次均渲染不全)
			const dataUrl = await htmlToImage.toPng(target)
			const dataUrl2 = await htmlToImage.toPng(target)
			const dataUrl3 = await htmlToImage.toPng(target)
			const dataUrl4 = await htmlToImage.toPng(target)
			imgcanvas.value = dataUrl4  //(base64格式的图片地址)
		},100)
	};

截图的区域如果有字体,尽量用本地字体,或者使用异步等待,否则可能导致截图出来的字没有字体
如果截图区域的字有不期望的样式例如截图前没换行,截图后换行了,直接在代码里面加固定死不换行即可(截图后还是原来的样式,只是样式会参考当前截图的容器了,如果空间不足就会导致换行,隐藏写死样式固定不换行即可)
微信浏览器自动播放音频(兼容Android和iOS)
  • 10
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

萧寂173

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值