如何在三个js渲染的Canvas中添加canvas的结束标签?

2024-02-19

三个js总是向页面添加没有结束标签的canvas元素,这背后有什么具体原因吗?

我想在此画布元素上添加结束标签。

Example page http://threejs.org/examples/#webgl_animation_cloth , inspecting the page shows, some thing like this. enter image description here

为什么我想要这个结束标签可能很愚蠢,我正在尝试使用以下命令获取上下文

context = canvas.getContext('2d');

但它返回 null ,所以在这里尝试了一些解决方案,但没有一个有效并且遇到了这个答案 https://stackoverflow.com/a/24417704/4290096,所以我怀疑丢失的结束标签可能是一个问题。

实际上我想做的是将画布保存到图像中this https://stackoverflow.com/a/33243864/4290096.


@K3N 的赞成答案大约有一点是正确的:你的问题不是来自</canvas>结束标签未显示在检查器中,但来自您从已经初始化了 webgl 的画布中获取 2D 上下文的尝试。


But,

虽然在 HTML5 中确实如此一些元素 https://www.w3.org/TR/html-markup/syntax.html#void-element不需要结束标签,因为canvas https://html.spec.whatwg.org/multipage/dom.html#concept-element-tag-omission

text/html 中的标签省略:
两个标签都不可省略。

这是一个小的反证明其他小提琴 https://jsfiddle.net/epistemex/w5aaodxj/,既然是,<script>内容应该在遇到时直接执行,并且现代浏览器在遇到结束标记之前使画布元素在 DOM 中可用,这些浏览器能够执行这个简单的脚本(IE9 不会),但这肯定是您的事情想要避免:

canvas{border: 1px solid}
<canvas>
<p>I'm not there</p>

So it's just your inspector, or maybe internally your browser which doesn't show it, but you must write it in your markup.
(Actually, if we're talking about chrome, it's only the inspector which doesn't show it, you can see it by calling the outerHTML property of the canvas element, the closing tag will be there.)

对于解决方案,

您想要做的是将画布导出为静态图像。
为此,自toBlob https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toBlob是一个 HTMLCanvasElement 的方法,你不需要当前上下文,你只需要最后一部分答案 https://stackoverflow.com/questions/33242959/saving-png-files-with-filesaver-js/33243864#33243864您在问题中向我们指出了一些小的调整:

正如中所解释的那样这个答案 https://stackoverflow.com/a/32641456/3702797 by gman https://stackoverflow.com/users/128511/gman,webgl canvas 是双缓冲的,并且浏览器会尽快清除绘图缓冲区,除非上下文是使用preserveDrawingBuffer: true的论点getContext() method.
但这种说法会对性能产生严重影响,最好的推荐方法是调用toBlob()方法,在与渲染相同的调用中,同步进行。

由于它已经在那里得到了很好的解释,我不会在这个主题上扩展太多,但请注意,它也涉及toDataURL() and some2dCanvas.drawImage(yourWebglCanvas,x,y).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在三个js渲染的Canvas中添加canvas的结束标签? 的相关文章

  • Jasmine 条件 callThrough 和 callFake

    我有一个返回函数引用的方法 function methodetobeMoked param case1 return func1 case 2 return func2 case n return funcN 我需要监视这个方法并返回特定输
  • 使用 jquery 淡入/淡出

    我正在研究我的学生项目 我是新的 jquery 对于该项目 我必须使用 jquery 来增强一些功能 并且我已经学到了很多来执行基本任务 但我陷入了一些非常令人困惑的事情 我的一个脚本实际上在鼠标悬停在功能上时更改了 div 容器的图像 功
  • 如何让 Google Apps 脚本进行 SHA-256 加密?

    我需要使用文本输入 1 轮 十六进制输出 SHA 256 加密来加密字符串 这应该是一个长度为 64 的字符串 我在 Google Apps 脚本文档中尝试过的每个 SHA 256 加密模块都会返回一组数字 例如 function SHA2
  • 少吞咽然后缩小任务

    我必须在 gulp 中执行 2 个步骤 减少 css 文件格式 缩小生成的 css 文件 这是我的吞咽文件 var gulp require gulp watch require gulp watch less require gulp l
  • 非常基本的 JS 编码,是否有 SoundManager2?

    我想在我的网站上包含一个具有以下属性的音频 可能的视频播放器 必须可通过 div 通过 CSS 设计样式 可以读取所有ID3信息 可以从数据库中提取文件 可能是 GoDaddy 的 Easy Database 无闪光 可转移至智能手机等 我
  • 将图像缩略图上传到服务器,而不上传整个图像

    据我所知 我在这里问的是不可能的 但我想无论如何我都会问 以防我遗漏了什么 假设您想让用户上传 JPG 图像 并且这些图像被缩放为较小的图标 并且原始图像始终被丢弃并且不再需要 有没有什么方法可以在大多数现代浏览器中普遍使用 让用户选择硬盘
  • 如何使用 console.log 省略文件/行号

    如今 您可以在 Chrome 的控制台中编写非常好的东西 查看this https developer chrome com devtools docs tips and tricks关联 我也做了一个截图 正如您在屏幕截图中看到的那样 文
  • 如何更改点击事件上的引导插入符指向方向

    我正在使用 2 3 2 引导程序 因为当我单击菜单按钮时 我可以更改插入符号图标的位置 我需要当我单击图标插入符号向上时 当您单击另一个项目时 插入符号返回到初始状态 这怎么可能 导航代码 div div class container d
  • 将其作为参数传递给 addEventListener()

    我想添加change一组复选框的事件 我如何访问this在我的事件函数中 这样当我执行事件时我可以访问复选框的值 这是我当前的代码 var checkboxes document getElementsByClassName cb Arra
  • 无法提取 Typescript 中的对象值

    我一直在尝试将 JavaScript Web 表单转换为 Typescript 但无法弄清楚如何处理以下内容 在 JavaScript 中有效 let fieldValues JSON parse cookieData let keys O
  • 标记内的值发生变化时调用函数

    JavaScript 有没有什么方法可以在段落标记的值更改时调用函数 概述 HTML p 00 00 p
  • 谷歌浏览器如何启动桌面应用程序?

    我真的不知道术语 所以我将从一个例子开始 如果我点击磁力链接 Google Chrome 会询问我是否要启动 torrent 客户端 我单击 确定 chrome 启动该应用程序 该应用程序根据链接执行一些操作 现在有办法查看应用程序如何从
  • 单击时突出显示文本(javascript jquery html)

    当您在所有浏览器中双击某个单词时 它们会自动突出显示单击下的单词 但是否有可能找到一种方法exact单击一下就会发生同样的事情吗 我想这涉及到的事情可能是 TextRange 的东西 对所有段落 或整个正文或 div 的 onclick 做
  • D3 时间解析返回 null

    根据此页面上的说明 https github com mbostock d3 wiki Time Formatting https github com mbostock d3 wiki Time Formatting我正在尝试解析 ISO
  • Bootstrap 3 - 模态背景不会根据模态对话框的高度调整大小?

    我将一个表单放入模式中 并尝试在用户触发单选按钮时显示表单的一些隐藏字段 显示隐藏字段后 模态自动重新缩放的高度 但模态背景的高度不能用作模态对话框 我该如何解决它 div class modal fade div class modal
  • 按钮导致页面重新加载

    我在我的页面上使用 html 和 jquery 在我的 html 中 我有一个按钮 单击该按钮将触发一个功能 当页面加载时 我调用文档准备中的主函数 这是我的代码 div div
  • 加载 angularjs 路由后运行 javascript 代码

    我需要在 angularjs 加载路线后显示警报 显示警报的代码位于 angularjs 异步加载的视图中 视图加载后 我希望它能够运行 但它没有 我知道我可以广播并告诉它稍后运行等 但我需要一个更通用的解决方案 假设您正在谈论基于以下内容
  • onClick 事件适用于触摸屏设备上的触摸吗?

    我用过onclick我的网站上的活动 但是 当我在谷歌浏览器的开发人员模式移动视图中打开它时 触摸使用鼠标单击的元素没有任何反应 所以我的问题是 我还必须添加吗ontouch事件连同onclick事件或 onClick 事件适用于所有触摸屏
  • Firefox 和 Chrome 为 offsetTop 提供了不同的值

    我试图相对于输入字段定位一个跨度元素 让我们称之为 工具提示跨度 为此 我将工具提示跨度和输入字段包装在另一个跨度元素中 我们称之为 包装器跨度 该元素具有position relative 然后我设置position absolute在工
  • 调试客户端时使用 Chrome/Firefox

    我正在使用带有 getUserMedia 的相机 但出现了一些需要修复的错误 问题是 Visual Studio 只允许我使用 IE 调试 JavaScript 我的意思是命中断点 而 IE 不支持 getUserMedia 如果您想在 I

随机推荐