请教前端实现获取dom元素快照的方法
我在做自定义大屏, 一个大屏是有若干个iframe构成, 大屏列表展示的时候想显示下每一个大屏的缩略图, 所以我就想在大屏编辑预览时获取大屏dom元素的快照, 作为这条数据的缩略图显示.
试过了html2canvas和domtoimage, 对于有iframe的都处理不好.
又网上找到了这个rasterizeHTML.js, 据说可以解决iframe的问题, 但是用的时候老是提示我Blocked script execution in 'about:srcdoc' because the document's frame is sandboxed and the 'allow-scripts' permission is not set.
. 我每个iframe都配置的有allow-scripts的:
<iframe
id={iframe_${payload.name}}
title={iframe_${payload.name}}
height="100%"
width="100%"
sandbox="allow-scripts allow-same-origin allow-popups"
frameBorder="0"
srcDoc={html}
/>
有没有大佬做过类似的功能, 请给我点思路或者建议.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
我确实做过,不过一言难尽。
方法是:每个DOM转存为JSON,iframe中的DOM也转为JSON,通过postMessage发送到外层页面,外层页面进行数据收集。
得到JSON列表再在一个新的iframe中渲染出来
DOM转JSON可以参考:https://www.npmjs.com/package...
iframe url 响应头部增加下面的配置试试,参考文章
大屏可以考虑针对性地开发浏览器插件进行增强.
谢谢各位热心的大佬, 昨天我摸索的解决方案是:
逐个把每一个iframe(一个iframe是一个大屏的组件)用html2canvas转成图片, 然后用这个图片替换掉这个组件的Html代码, 这样可以保持这个组件大屏的位置不变. 最后把含有多个组件图片的大屏转成一张图.
具体代码是: