调试 JS 修改一些特定的 canvas 元素
Debug JS modifying some specific canvas element
我正在尝试使用 Chrome 开发人员工具调试 canvas 元素。
来自:
How to inspect Canvas Frames
我可以看到有一个实验性功能可以做类似的事情,但被删除了。
有没有办法 search/find 负责修改某些特定 canvas 元素的 JS 代码?这样至少我们可以在 JS
中添加断点
Event Listener Breakpoints 部分允许您在创建 canvas 上下文时暂停。但是当 canvas 被修改时,我没有看到任何暂停的断点。
如果 canvas 在页面加载后被修改,您可以 运行 在控制台中像这样:
const context = $("canvas").getContext("2d");
for (const key in context) {
if (context[key] instanceof Function) {
// debug() pauses on the first line of the function whenever it's called.
// This function is only available from the DevTools Console:
// https://developers.google.com/web/tools/chrome-devtools/console/command-line-reference#debugfunction
debug(context[key]);
}
}
然后触发修改
如果它发生在页面加载时,只需在 canvas 修改前 运行 秒的脚本中的某处添加一个断点,运行 上面的代码暂停时在控制台中,然后恢复脚本执行。
您可以尝试此演示中的工作流程:https://51789703.glitch.me/
我找到了一个解决方法:覆盖 CanvasRenderingContext2D 中的函数并添加一个 "debugger;" 行以在每次调用时停止(或添加一些额外的条件来停止)
我正在尝试使用 Chrome 开发人员工具调试 canvas 元素。
来自:
How to inspect Canvas Frames
我可以看到有一个实验性功能可以做类似的事情,但被删除了。
有没有办法 search/find 负责修改某些特定 canvas 元素的 JS 代码?这样至少我们可以在 JS
中添加断点Event Listener Breakpoints 部分允许您在创建 canvas 上下文时暂停。但是当 canvas 被修改时,我没有看到任何暂停的断点。
如果 canvas 在页面加载后被修改,您可以 运行 在控制台中像这样:
const context = $("canvas").getContext("2d");
for (const key in context) {
if (context[key] instanceof Function) {
// debug() pauses on the first line of the function whenever it's called.
// This function is only available from the DevTools Console:
// https://developers.google.com/web/tools/chrome-devtools/console/command-line-reference#debugfunction
debug(context[key]);
}
}
然后触发修改
如果它发生在页面加载时,只需在 canvas 修改前 运行 秒的脚本中的某处添加一个断点,运行 上面的代码暂停时在控制台中,然后恢复脚本执行。
您可以尝试此演示中的工作流程:https://51789703.glitch.me/
我找到了一个解决方法:覆盖 CanvasRenderingContext2D 中的函数并添加一个 "debugger;" 行以在每次调用时停止(或添加一些额外的条件来停止)