html5浏览器截图的示例

这篇文章主要介绍了html5使用html2canvas实现浏览器截图的示例,非常具有实用价值,需要的朋友可以参考下

最近做项目为了解决全局异常信息记录,研究了一下浏览器全屏截图功能,方便用户发现异常时能够快速截图发给管理员。最终记录的异常信息如下,上面的【截图报告管理员】就是使用html2canvas前端插件实现的。

html5浏览器截图的示例

html2canvas介绍

以前我们只能通过其他的截图工具来截取图像。现代浏览器的功能已经越来越强,随着H5的逐渐普及,浏览器本身就可以截图啦。html2canvas就是这样一款前端插件,它的原理是将Dom节点在Canvas里边画出来。虽然很方便,但有以下限制:

不支持iframe

立即学习“前端免费学习笔记(深入)”;

不支持跨域图片

不能在浏览器插件中使用

部分浏览器上不支持SVG图片

不支持Flash

不支持古代浏览器和IE,如果你想确认是否支持某个浏览器,可以用它访问 http://deerface.sinaapp.com/ 试试 :)

由于我的使用场景很简单,记录一下异常信息,并且异常页面也是由自己定义的,那么html2canvas 就足够使用了。

使用实例

引用jquery,html2canvas即可,使用代码也很简单。我这里使用的是 html2canvas 0.5.0 版本

 html2canvas($("#tbl_exception"), {         onrendered: function (canvas) {             var url = canvas.toDataURL();              //以下代码为下载此图片功能             var triggerDownload = $("").attr("href", url).attr("download", getNowFormatDate()+"异常信息.png").appendTo("body");               triggerDownload[0].click();               triggerDownload.remove();           }   });

第一个参数是要截图的Dom对象,第二个参数时渲染完成后回调的canvas对象。

Name Type Default Description

allowTaintbooleanfalseWhether to allow cross-origin images to taint the canvasbackgroundstring#fffCanvas background color, if none is specified in DOM. Set undefined for transparentheightnumbernullDefine the heigt of the canvas in pixels. If null, renders with full height of the window.letterRenderingbooleanfalseWhether to render each letter seperately. Necessary ifletter-spacing is used.loggingbooleanfalseWhether to log events in the console.proxystringundefinedUrl to the proxy which is to be used for loading cross-origin images. If left empty, cross-origin images won’t be loaded.taintTestbooleantrueWhether to test each image if it taints the canvas before drawing themtimeoutnumber0Timeout for loading images, in milliseconds. Setting it to 0 will result in no timeout.widthnumbernullDefine the width of the canvas in pixels. If null, renders with full width of the window.useCORSbooleanfalseWhether to attempt to load cross-origin images as CORS served, before reverting back to proxy

问题分析

介绍完使用之后,说说自己使用中遇到的问题,截图只能截取当前屏幕内的内容。在查看插件源码,进行调试之后找到了解决方案。下面贴出源码和修改后的代码

源码:

 return renderDocument(node.ownerDocument, options, node.ownerDocument.defaultView.innerWidth, node.ownerDocument.defaultView.innerHeight, index).then(function(canvas) {        if (typeof(options.onrendered) === "function") {            log("options.onrendered is deprecated, html2canvas returns a Promise containing the canvas");            options.onrendered(canvas);        }        return canvas;    });

修改代码:

   //2016-02-18修改源码,解决BUG 对于部分不能截屏不能全屏添加自定义宽高的参数以支持    var width = options.width != null ? options.width : node.ownerDocument.defaultView.innerWidth;    var height = options.height != null ? options.height : node.ownerDocument.defaultView.innerHeight;    return renderDocument(node.ownerDocument, options, width, height, index).then(function (canvas) {        if (typeof(options.onrendered) === "function") {            log("options.onrendered is deprecated, html2canvas returns a Promise containing the canvas");            options.onrendered(canvas);        }        return canvas;    });

主要是让用户调用时能够自定义需要截取Dom对象的宽和高,现在调用方式如下

 

以上就是html5浏览器截图的示例的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1544946.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月21日 16:23:02
下一篇 2025年12月17日 13:47:49

相关推荐

  • html5中sse服务器发送事件EventSource相关介绍

    本篇文章主要介绍了浅谈html5之sse服务器发送事件eventsource介绍,具有一定的参考价值,有兴趣的可以了解一下 前言 我前面文章讲过数据大屏,里面的数据时时更新。还有时时更新的股票数据,Facebook/Twitter 更新、估价更新、新的博文、赛事结果等等,都需要数据时时更新。之前我们…

    2025年12月21日
    000
  • 实例详解html5使用canvas实现图片下载功能

    这篇文章主要介绍了html5使用canvas实现图片下载功能的示例代码,非常具有实用价值,需要的朋友可以参考下 最近项目中需要实现一个下载图片的功能(如下图) 一开始考虑使用a标签的download属性进行下载: 下载海报 但是通过测试,发现再safari中,下载的文件不能带上拓展名,所以只好换一个…

    2025年12月21日
    000
  • 详解HTML5如何操作WebSQL数据库

    下面通过本文给大家分享html5操作websql数据库的实例代码,感兴趣的朋友一起看看吧 HTML代码: 列车时刻表查询 列车时刻表查询 请给我留言 姓名: 留言: 留言 查询 收藏 给我留言 Close 收藏成功,暂且不做处理!. 请点击右上角有个关闭按钮 提示: 你也可以点击弹窗的外部区域来关闭…

    2025年12月21日
    000
  • 韩顺平H5游戏开发坦克大战视频源码课件分享

    《韩顺平h5游戏开发坦克大战视频教程》是选自韩顺平的网络公开课,介绍了如何使用html5来制作坦克大战游戏,对h5的技术有很显著的提高.我将会带着大家做一个3d的俯视坦克大战游戏。将从最基本的控制,到敌人的ai与整个游戏的系统等一步步的带着大家实现一个完整的游戏。教程中我们重点是程序与unity的使…

    2025年12月21日
    000
  • 关于HTML5中性能优化的详解

    HTML5性能优化 –减少重绘         在HTML页面完成展现之后,动态改变页面元素或调整CSS样式都会引起浏览器重绘,性能的损耗直接取决于动态改变的范围:如果只是改变一个元素的颜色之类的信息则只会重绘该元素;而如果是增删节点或调整节点位置则会引起其兄弟节点也一并重绘。     …

    好文分享 2025年12月21日
    000
  • html如何强制显示以及隐藏浏览器的滚动条

    刚在做个网站,有个页面与其他页面显示有点出入, 通过观察和调试,发现是该页面的垂直高度未溢出, 无法调用出垂直滚动条, 从而导致相对于其他页面居中时相差几个像素距离, 使得页面效果不够友好。 立即学习“前端免费学习笔记(深入)”; 解决方案:将所有页面强制添加或者隐藏浏览器的滚动条即可。 相关…

    好文分享 2025年12月21日
    000
  • javascript如何实现拖放功能_相关的事件有哪些

    关键拖放事件包括源元素的dragstart、drag、dragend和目标元素的dragenter、dragover、dragleave、drop;需设置draggable=”true”,在dragstart中setData,在dragover中preventDefault,…

    2025年12月21日 好文分享
    000
  • 如何实现JavaScript验证表单_前端验证的最佳实践是什么

    JavaScript表单验证核心是提升体验与保障基础数据质量,但不可替代后端验证;需结合HTML5原生属性与JS增强交互,确保提示清晰可访问,并始终信任后端校验。 JavaScript 表单验证的核心目标是提升用户体验和保障基础数据质量,但它不能替代后端验证。前端验证应快速反馈、友好提示、不干扰正常…

    2025年12月21日
    000
  • javascript的SEO优化有哪些方法_如何让单页应用被搜索引擎收录

    单页应用(SPA)需通过服务端渲染(SSR)、预渲染或动态渲染使爬虫获取完整HTML,辅以语义化标签、动态元信息、规范路由及Sitemap等基础SEO实践来提升搜索引擎收录效果。 单页应用(SPA)默认对搜索引擎不友好,因为传统爬虫难以执行 JavaScript 渲染页面内容。要让搜索引擎收录 SP…

    2025年12月21日
    000
  • JavaScript如何实现数据可视化?

    JavaScript数据可视化核心是选用成熟图表库(如Chart.js、D3.js、ECharts、Plotly.js)将规范数据渲染为图形,需准备结构化数据、配置选项、嵌入网页,并注意响应式、交互及数据校验。 JavaScript 实现数据可视化,核心是借助成熟的图表库将结构化数据转化为图形界面,…

    2025年12月21日
    000
  • javascript可以开发游戏吗_怎样用canvas创建简单动画

    JavaScript配合HTML5可原生开发2D游戏动画;需获取2D上下文,用requestAnimationFrame实现清屏→绘制→循环;通过变量更新位置并重绘,配合边界检测防止越界。 当然可以,JavaScript 配合 HTML5 是开发轻量级 2D 游戏和动画的常用组合,无需插件,浏览器原…

    2025年12月21日
    000
  • 如何使用JavaScript实现拖放功能_它需要哪些事件和处理程序呢

    JavaScript拖放功能核心是HTML5拖放API,需绑定dragstart、dragover(必须preventDefault)、dragenter、drop四个事件,分别处理数据设置、允许放置、视觉反馈和实际操作。 JavaScript 实现拖放功能,核心是利用原生的 HTML5 拖放 AP…

    2025年12月21日 好文分享
    000
  • JavaScript网页游戏开发有哪些基础?

    JavaScript网页游戏开发基础包括浏览器环境、核心语言、Canvas/WebGL渲染、游戏循环、输入响应和资源管理;初学者应先掌握Canvas的“清屏→更新→重绘”循环,用requestAnimationFrame+deltaTime分离逻辑与渲染,封装InputManager处理多端输入,并…

    2025年12月21日
    000
  • javascript如何操作音频_怎样创建简单的音频播放器

    使用HTML5 标签配合JavaScript是实现基础音频播放器最简单高效的方式,通过调用play()、pause()等方法及监听timeupdate等事件即可完成播放控制与进度同步。 JavaScript 操作音频主要依靠 HTML5 的 元素 和 Web Audio API。做简单播放器,用原生…

    2025年12月21日
    000
  • 如何实现JavaScript数据可视化_Chart.js和D3.js如何选择

    Chart.js适合简单图表、快速上线场景,如后台系统的用户增长曲线和销售占比饼图;D3.js适合高度定制、强交互或数据驱动DOM操作,如关系网络图、地理热力图等。 选Chart.js还是D3.js,关键看需求复杂度和开发资源——简单图表、快速上线,Chart.js更合适;需要高度定制、交互丰富或数…

    2025年12月21日
    000
  • javascript如何实现本地存储_cookie与localStorage有何区别?

    JavaScript本地存储应按需选用cookie或localStorage:cookie用于身份认证等需服务端交互的小数据,支持HttpOnly防XSS;localStorage适合前端大容量状态存储,但易受XSS攻击。 JavaScript 中的本地存储主要靠 cookie 和 localSto…

    2025年12月21日
    000
  • javascript中的路由是什么_如何实现单页应用的路由功能

    JavaScript路由是在SPA中不刷新页面、根据URL变化动态加载内容的机制,核心为监听URL、匹配路径规则、触发渲染;支持Hash和History两种模式,工程中推荐使用React Router等成熟库。 JavaScript 中的路由,指的是在单页应用(SPA)中,不刷新页面的前提下,根据 …

    2025年12月21日
    000
  • javascript怎样操作HTML5 Canvas?_javascript中如何绘制图形和动画?

    Canvas 是 HTML5 的绘图区域,需用 JavaScript 获取 2D 上下文(ctx)后绘图;核心步骤是获取 canvas 元素并调用 getContext(‘2d’);支持矩形、路径、文字等绘制及 requestAnimationFrame 动画。 Canvas…

    2025年12月21日
    000
  • 前端存储方案_javascript本地存储

    Cookie 适合存储小量关键数据如 token,但容量小且有安全风险;2. Web Storage(localStorage/sessionStorage)提供较大存储空间,用于保存用户偏好或临时状态;3. IndexedDB 支持大量结构化数据存储,适用于离线应用;4. 配合 Cache API…

    2025年12月21日
    000
  • 如何实现javascript路由_前端路由原理是什么?

    前端路由的核心是在不刷新页面的前提下改变URL并响应不同视图,依赖hash模式(通过#及hashchange事件)或history模式(通过pushState/replaceState及popstate事件)实现SPA的页面切换体验。 前端路由的核心是不刷新页面的前提下,改变 URL 并响应不同视图…

    好文分享 2025年12月21日
    000

发表回复

登录后才能评论
关注微信