javascript - 调用 Firefox 的 :screenshot helper function in the Browser Console with JavaScript

标签 javascript firefox chromium webpage-screenshot

我正在尝试编写一个小脚本以将其复制到实时页面的 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/

相关文章:

javascript - dc.js:dispose() 和 deregisterChart() 的问题

javascript - $pull mongodb 没有删除项目

javascript - 使用 JS 而不是 Jquery 获取具有特定 id 的最后一个 child

javascript - 表单的无效 eventListener

javascript - 按键在 chrome 中工作,但在 firefox 中不工作

javascript - 修改 HTML 的 Firefox 扩展

python selenium 多个测试用例

c++ - chromium 源码中的 BASE_EXPORT 有什么作用?

html - Chromium 上的字体渲染颜色错误

javascript - Chromium Embedded Framework 原生函数的后台进程