35

是否可以像在 Silverlight 中使用 Silverlight Spy 那样检查 HTML5 画布上呈现的对象?

如果我使用 Chrome 元素检查器,我只能检查 DOM。

4

5 回答 5

47

编辑: 此答案不适用于新的 chrome 版本,请参阅: chrome canvas inspector 2015

在 Chrome 金丝雀中:

  1. 在您的浏览器中,输入此网址chrome://flags/
  2. 启用启用开发者工具实验
  3. 重新启动 Chrome
  4. 在开发者工具中,点击 调gear出开发者偏好
  5. 从菜单中选择实验
  6. 选择帆布检查
  7. 关闭 devtools,刷新页面,重新打开 devtools

画布分析器的完整指南:http: //www.html5rocks.com/en/tutorials/canvas/inspection/

动画 gif 显示它在行动中: https ://twitter.com/umaar/status/480705624448045057

于 2013-01-22T19:53:59.637 回答
20

Canvas 的内容不是 DOM 的一部分,因此您无法检查它的内容。正如您正确指出的那样,检查员只能检查 DOM,因此画布超出了它的范围。您可以在开发工具的控制台中检查画布的内容,尽管使用

yourcanvas.toDataURL();

并检查相邻选项卡中的输出 dataURL。

于 2012-02-04T18:38:14.507 回答
11

HTML5 Canvas 上没有呈现任何对象。只有像素。当你绘制一个形状时,画布挥动它的魔杖,像素出现,然后它甚至忘记了任何事情发生。

正如许多人所做的那样,您可以跟踪您在 Canvas 上绘制的内容,以便拥有用于重绘的持久对象。我已经写了 A Gentle Introduction to Making HTML5 Canvas Interactive,毫无疑问,如果你搜索你会发现其他教程。

在构建持久对象系统时,您几乎肯定会希望包含大量调试代码,这些代码输出易于理解的对象列表及其坐标。很多人选择使用console.log将输出您想要的任何字符串的语句来执行此操作(大多数现代浏览器中 F12 开发人员工具的一部分)。

但就是这样。你建造的是你用来检查事物的东西。

于 2012-02-04T19:40:48.860 回答
3

目前无法检查画布内容,但如果是 WebGL,您可以使用Google Chrome 的“ WebGL Inspector ”扩展,所以我认为也可以为 Canvas 制作类似的扩展。但它不像普通的 DOM 检查器那样工作。

这是 WebGL 检查器的功能:

  • 用于注入页面的扩展
  • 使用单个脚本嵌入现有应用程序包括
  • 捕获整个 GL 帧
  • 带有步进/资源导航和冗余呼叫警告的带注释的呼叫日志
  • 像素历史 - 查看所有有助于像素 + 混合信息的绘制调用
  • GL状态显示
  • 纹理、缓冲区和程序的资源浏览器

希望我不是越野,但目前没有位图或矢量画布检查器。

于 2012-02-04T19:37:31.863 回答
2

将画布视为 ms 油漆。没有对象,只有像素和将它们放在屏幕上的方法。

于 2012-02-04T18:50:46.333 回答