首页 > 编程语言 >ArcGIS API for Javascript解决html2canvas、domtoimage截图地图出现空白问题

ArcGIS API for Javascript解决html2canvas、domtoimage截图地图出现空白问题

时间:2024-07-03 14:31:12浏览次数:23  
标签:截图 domtoimage preserveDrawingBuffer Javascript html2canvas attributes type

原因

使用html2canvas、domtoimage进行截图时,会出现地图面板是空白的情况,报错如下:

#1 133ms Unable to clone WebGL context as it has preserveDrawingBuffer=false <canvas style=​"width:​ 100%;​ height:​100%;​ >

在通过ArcGIS API for JavaScript 4.X版本实例化地图的时候,我们的底图是通过canvas元素绘制出来的,canvas无法被截图的原因是其上的WebGL context的preserveDrawingBuffer为false,结合告警信息中的提示,那我们只需要将其设置为true,应该就可以解决,在Stack Overflow也有相关的解决方法,大家有兴趣的话可以看看: Canvas toDataURL() returns blank image

解决

在我们地图实例化的后面,增加一个立即执行函数,在函数里面将preserveDrawingBuffer属性值设置为true即可,如下:

// 解决domtoimage,html2canvas截图空白问题
HTMLCanvasElement.prototype.getContext = (function (origFn) {
  return function (type, attributes) {
    if (type.indexOf('webgl') > -1) {
      attributes = Object.assign({}, attributes, {
        preserveDrawingBuffer: true
      })
    }
    return origFn.call(this, type, attributes)
  }
})(HTMLCanvasElement.prototype.getContext)

标签:截图,domtoimage,preserveDrawingBuffer,Javascript,html2canvas,attributes,type
From: https://www.cnblogs.com/ZerlinM/p/18281569

相关文章

  • 用JavaScript来优化数独验证的过程
    问题陈述给定一个9x9数独棋盘,确定它是否有效。棋盘由一个二维数组表示,其中空单元格用表示'.'。有效的数独棋盘满足以下规则:每行必须包含数字1–9,且不能重复。每列必须包含数字1–9,且不能重复。九个3x3子网格中的每一个都必须包含数字1–9,且不能重复。初步方法一种简......
  • WebStorm 2024 for Mac JavaScript前端开发工具
    Mac分享吧文章目录效果一、下载软件二、开始安装1、双击运行软件(适合自己的M芯片版或Intel芯片版),将其从左侧拖入右侧文件夹中,等待安装完毕2、应用程序显示软件图标,表示安装成功3、打开访达,点击【文稿】。将安装包内的【ja-netfilter】文件夹拖到文稿中4、填写内容,修改用......
  • JavaScript-WebAPI
    文章目录JS组成什么是webApis和APIDOM简介document对象获取DOM对象利用css选择器来获取DOM元素选择指定css选择器的所有元素其他获取DOM元素方法(了解)操作元素内容对象.innerText对象.innerHTML操作元素属性操作元素常用属性操作元素样式属性通过style属性操作......
  • 大学生HTML期末大作业——HTML+CSS+JavaScript运动网站(田径)
    HTML+CSS+JS【运动网站】网页设计期末课程大作业web前端开发技术web课程设计网页规划与设计......
  • 大学生HTML期末大作业——HTML+CSS+JavaScript购物商城(Oppo)
    HTML+CSS+JS【购物商城】网页设计期末课程大作业web前端开发技术web课程设计网页规划与设计......
  • JavaScript 中删除数组元素
    在JavaScript中,没有像Java的ArrayList中的remove方法那样直接删除指定元素的方法,删除指定下标的数组元素可以通过几种方式实现方法一:使用 splice() 方法splice()方法可以在数组中添加或删除元素,并返回被删除的元素。letarr=[1,2,3,4,5];letindexToRemove......
  • JavaScript 学习教程:从入门到精通
    JavaScript学习教程:从入门到精通JavaScript是网页开发过程中不可或缺的一部分,无论你是初学者还是有一定基础的开发者,这篇教程将帮助你更深入地理解和运用JavaScript。本文将分为多个章节,涵盖JavaScript的基本概念、高级技术、常用库和框架,以及实际项目案例。目录Jav......
  • 【JavaScript脚本宇宙】打造完美用户体验:六大模态库全解析
    从美观到高效:六大模态库实战指南前言随着现代Web开发的不断进步和用户体验要求的提升,模态窗口(Modal)已成为网页设计中不可或缺的一部分。模态窗提供了一种直观而有效的方式来展示重要信息、提示用户操作或承载交互内容。本文将全面介绍六大流行的模态库,包括BootstrapModal......
  • CH01_初识JavaScript
    第1章:初识JavaScript编程语言本章目标了解为什么要学习JavaScipt编程语言掌握JS的基本结构掌握JS的执行原理掌握JS的基本语法结构掌握JS的几种输出方式掌握JS的注释课程回顾什么是HTML?HTML的标签分为块级元素和行级元素,他们的区别是什么?HTML的表单元素有那些?HTML的列表......
  • 【JavaScript脚本宇宙】从发票生成到网页保存:JavaScript PDF库指南
    探索顶级JavaScriptPDF库:高效处理PDF文档的利器前言随着数字化信息的普及和无纸化办公理念的深入,PDF文档因其高度兼容性和稳定性成为了存储、分享和展示信息的首选格式。为了满足不同用户对PDF文档生成和处理的需求,各类功能强大的JavaScript库应运而生。这篇文章将详细介......