当前位置: 首页 > news >正文

解决html-to-image在 ios 上dom里面的图片不显示出来

原因:在iOS的Safari浏览器,使用页面生成图片,如dom里面有图片,则会先进行加载资源,但是这个加载速度会随着图片大小而延长,但是页面生成图片的时机总会比这个快。所以会导致dom里面的图片不会出来

解决方案:这里我是用了vue3。

const captureSnapshot = async (targetElement,options,previousDataUrl = "") => {const dataUrl = await htmlToImage.toPng(targetElement,options)// 这是判断因为 dataUrl 对快照图像进行了编码,而 Safari 现在渲染的内容比上次更多。dataUrl 的长度提供了一些关于渲染内容的信息。直到dataUrl.length停止增加,表明 Safari 已完成渲染。return (dataUrl.length !== previousDataUrl.length)? captureSnapshot(targetElement,options,dataUrl): dataUrl
}// 页面上传图片
const generateReport = () => {let offscreenContainer = document.getElementById('my-node');// 这个options无所谓,主要是captureSnapshot方法和下面给img加上decoding="sync"属性let options = {quality: 0.95,backgroundColor: '#ffffff',width: offscreenContainer.scrollWidth,height: offscreenContainer.scrollHeight,pixelRatio: window.devicePixelRatio > 2 ? 2 : window.devicePixelRatio,filter: function (node) {if (node.tagName === 'IMG' && (!node.src || node.src === '')) {return false;}if (node.classList && node.classList.contains('landscape-wrap')) {return false;}if (node.classList && node.classList.contains('link-more')) {return false;}return true;},canvasTimeout: 15000,useCORS: true,skipAutoScale: true,allowTaint: true,// iOS兼容性设置preferredFontFormat: 'woff2',skipFonts: false,style: {transform: 'scale(1)',transformOrigin: 'top left'},};try {// 确保所有图表都已渲染完成await nextTick();// 这个也是关键代码。给offscreenContainer里面的img添加decoding="sync"属性,不然ios上还是会显示不出dom里面的图片offscreenContainer.querySelectorAll('img').forEach(img => {img.setAttribute('decoding', 'sync');});// 转换为png格式imgSrc.value = await captureSnapshot(offscreenContainer,options);} catch (error) {console.error('生成失败:', error);}
}


http://www.lryc.cn/news/622892.html

相关文章:

  • 一次性能排查引发的Spring MVC深度思考
  • 31 HTB Union 机器 - 中等难度
  • pytest介绍(python测试框架)(@pytest.mark.parametrize、@pytest.fixtures)
  • yolo neck特征融合 浅层特征深层特征
  • Python训练营打卡 DAY 38 Dataset和Dataloader类
  • Linux上管理Java的JDK版本
  • B*算法深度解析:动态避障路径规划的革命性方法
  • Go语言指针与内存分配深度解析:从指针本质到 new、make 的底层实现
  • 【最后203篇系列】032 OpenAI格式调用多模型实验
  • RD-Agent for Quantitative Finance (RD-Agent(Q))
  • Spark Shuffle中的数据结构
  • 亚马逊S3的使用简记(游戏资源发布更新)
  • 后台管理系统-4-vue3之pinia实现导航栏按钮控制左侧菜单栏的伸缩
  • 二进制为什么使用记事本读取会出乱码
  • 密码学入门笔记4:分组密码常见算法1——DES
  • Custom SRP - Baked Light
  • 用Pygame开发桌面小游戏:从入门到发布
  • 搜索 AI 搜索 概率论基础教程第3章条件概率与独立性(二)
  • 概率论基础教程第3章条件概率与独立性(一)
  • 《P4180 [BJWC2010] 严格次小生成树》
  • [极客时间]LangChain 实战课 ----- 代理(上)|(12)ReAct框架,推理与行动的协同
  • Manus AI与多语言手写识别的技术突破与行业变革
  • 《Python学习之字典(一):基础操作与核心用法》
  • 【每日一题】Day5
  • 电路设计——复位电路
  • 设计模式之静态代理
  • Java 10 新特性及具体应用
  • ABB焊接机器人弧焊省气
  • 多机编队——(6)解决机器人跟踪过程中mpc控制转圈问题
  • 【轨物方案】预防性运维:轨物科技用AI+机器人重塑光伏电站价值链