我正在尝试编写一个小脚本以将其复制到实时页面的 Web 控制台中,该脚本需要做的部分工作是截取文档正文的多个屏幕截图。这个脚本将供个人使用,用于一个非常具体的任务,所以我认为使用 Firefox 的内置辅助函数 :screenshot
不是问题,而不是更交叉兼容的解决方案。
我已阅读 this question关于同一主题,这解释了为什么无法从 JavaScript 的网页控制台调用此类辅助函数。但我认为我可以做的是使用 Firefox 的浏览器控制台,它可以访问整个浏览器。同样,我一直只是将函数复制并粘贴到控制台以在与页面交互时使用,所以如果我可以从浏览器控制台以编程方式调用 :screenshot
函数,我只需要弄清楚如何访问特定 文档
或选项卡的 DOM,我会得到相同的结果。
我已经尝试导入和使用 html2canvas,但它并没有起作用,这很可能是因为我试图截屏的内容驻留在 shadow-root
中。我知道另一种选择是编写我自己的扩展,但我想避免为此任务做这样的工作。最终,您知道是否有可能在基于 Chromium 的浏览器 (Brave) 中实现类似的结果吗?
非常感谢:D
最佳答案
好消息是,是的,您可以从浏览器控制台调用 devtools 屏幕截图功能。方便地,默认选择的节点是文档主体。
(async()=>{
const { require } = ChromeUtils.import("resource://devtools/shared/Loader.jsm");
const { gDevTools } = require("devtools/client/framework/devtools");
const { TargetFactory } = require("devtools/client/framework/target");
const target = await TargetFactory.forTab(gBrowser.selectedTab);
const toolbox = await gDevTools.showToolbox(target, "inspector");
const inspector = toolbox.getPanel("inspector");
inspector.screenshotNode();
})()
现在是坏消息。从浏览器控制台访问内容页面的 DOM 非常棘手:(
关于javascript - 调用 Firefox 的 :screenshot helper function in the Browser Console with JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60051035/