【问题标题】:How to inspect Canvas Frames如何检查画布框架
【发布时间】:2015-10-26 11:00:29
【问题描述】:

我刚刚看到这个link,关于如何在 Chrome 开发工具上检查“画布框架”,但如何在 Chrome 扩展上进行检查?

我认为这里应该使用chrome.debugger.sendCommand方法。

如何在 Chrome 扩展上做到这一点?

编辑:我通常想使用 Chrome 的调试器或类似的方法检查这些数据,而不与 JavaScript 的代码进行交互。

【问题讨论】:

    标签: javascript google-chrome-extension google-chrome-devtools


    【解决方案1】:

    编辑:如RobW's answer 所示,所需功能已从 Chrome 中删除。

    相关文档位于tip-of-the-tree debugging protocol docs

    具体来说,这是通过LayerTree 域完成的。请注意:由于它不在官方支持的调试器协议版本中,因此如有更改,恕不另行通知。

    API 的流程大概是附加到页面,发送命令以启用分析,然后侦听适当的事件。

    您可以查看a sample of how Debugger works,并尝试从文档中找出答案,或者通过remote-debugging 开发工具页面的WebSocket 流量来嗅探实际协议。

    【讨论】:

    • 有什么想法可以在后台做吗?
    • 答案中给出了idea。我没有实际的代码。阅读文档和通过远程调试对协议进行逆向工程的组合应该让您了解交换了哪些命令/事件。
    • 谢谢。我用this simple canvas尝试了LayerTree.enable这个方法,结果是:http://i.imgur.com/HwLxtjW.png现在,在这种情况下,如何重新编译canvas.drawImage变化?
    • LayerTree.replaySnapshot 应该这样做。
    • 谢谢replaySnapshot返回dataUrl图片,但我想看看如何获​​取drawImage(img,x,y,w,h)调用的参数。在开发工具中:i.imgur.com/WUCaQif.png
    【解决方案2】:

    实验性的 Canvas 检查功能已从 Chrome 44 (crbug.com/475808) 中移除。它是通过捕获页面中对画布方法的调用来实现的。

    我之前使用此 Canvas 检查功能为<canvas> 错误创建了简化的测试用例。在发现 Canvas 检查功能被删除后,我开发了一个新工具来捕获画布的快照。该工具拦截所有画布命令并将结果存储在 2D 上下文中,还提供了一种方法来检索迄今为止播放的所有命令。该工具和文档可通过https://github.com/Rob--W/canvas-interceptor 获得。

    目前,仅捕获了 2D 画布 API 的子集,因为尚未对每种参数进行序列化。没有实现的都是marked as TODO in the source code,所以如果你想在这个工具上构建,请随时提交拉取请求来填补缺失的部分。

    要在扩展程序中使用此工具,请通过带有run_at document_start 的内容脚本inject the code in the page。由于保存画布状态在内存方面非常昂贵,因此我建议仅在需要时使用 declarativeContent.RequestContentScript 操作插入脚本。

    【讨论】:

    • +1 对于拦截器画布,但这是代码注入,所以我不希望任何方式将一些代码注入页面上下文,并且站点不应该知道存在代码注入。我通常想使用 Chrome 的调试器或类似的方法检查这些数据,而不与 JavaScript 的代码交互
    • @wZVanG(现已删除)Canvas 检查功能也使用了代码注入。您可以将功能设计为页面几乎无法检测到它(类似于您关于 WebSockets 的问题 - stackoverflow.com/a/31182643),但这需要付出很多努力。如果你真的想不被页面的 JavaScript 代码检测到,你必须编译一个自定义版本的 Chrome 或 Firefox。
    • 这正是我想做的,做一个定制版的Chrome,让我的需求一般都能得到解决。用户下载 Chrome 版本不会有问题。例如,目前我的用户必须安装 Chrome Dev。我知道这不是问题,但你可以告诉我如何开始做吗?
    • 多年来,我找到了调试 OpenGL - WebGL 的工具......只是在一段时间后松动了它们......这个非常酷,失去它非常令人沮丧跨度>
    猜你喜欢
    • 1970-01-01
    • 2011-06-23
    • 2013-03-15
    • 2011-04-23
    • 1970-01-01
    • 2018-02-08
    • 1970-01-01
    • 2012-05-26
    • 2018-01-16
    相关资源
    最近更新 更多