调用Firefox';s:使用JavaScript在浏览器控制台中的屏幕截图辅助功能

调用Firefox';s:使用JavaScript在浏览器控制台中的屏幕截图辅助功能,javascript,firefox,chromium,webpage-screenshot,Javascript,Firefox,Chromium,Webpage Screenshot,我正在尝试编写一个小脚本,以便在live页面的web控制台中进行复制,该脚本需要做的部分工作是拍摄文档主体的几个屏幕截图。这个脚本将供个人使用,用于一个非常具体的任务,因此我认为使用Firefox的内置帮助函数:屏幕截图,而不是一个更具交叉兼容性的解决方案不会有问题 我也读过同样的主题,这解释了为什么不能用JavaScript从网页控制台调用这样的助手函数。但我想我可以做的是使用Firefox的浏览器控制台,它可以访问整个浏览器。再一次,我只是简单地将函数复制和粘贴到控制台中,以便在与页面交互时

我正在尝试编写一个小脚本,以便在live页面的web控制台中进行复制,该脚本需要做的部分工作是拍摄文档主体的几个屏幕截图。这个脚本将供个人使用,用于一个非常具体的任务,因此我认为使用Firefox的内置帮助函数
:屏幕截图
,而不是一个更具交叉兼容性的解决方案不会有问题

我也读过同样的主题,这解释了为什么不能用JavaScript从网页控制台调用这样的助手函数。但我想我可以做的是使用Firefox的浏览器控制台,它可以访问整个浏览器。再一次,我只是简单地将函数复制和粘贴到控制台中,以便在与页面交互时使用,因此,如果我可以从浏览器控制台以编程方式调用
:screenshot
函数,我只需要弄清楚如何访问特定
文档或选项卡的DOM,我就会得到相同的结果

我曾尝试导入和使用html2canvas,但很可能因为我试图截图的内容位于
影子根目录中而无法正常工作。我知道另一种选择是编写自己的扩展,但我希望避免为这项任务编写这样的工作。最后,你知道在基于Chromium的浏览器(Brave)中是否有可能实现类似的结果吗


非常感谢:D

你在用错误的方式解决问题。Firefox自版本57以来就已经内置了各种工具来提供您想要的东西。要实现这一点,您需要在需要时使用模式

MDN中的一个简单示例是


/path/to/firefox-p我的个人资料-无头--屏幕截图https://developer.mozilla.org/

好消息是,您可以从浏览器控制台调用devtools屏幕截图功能。默认选中的节点是单据体

(异步()=>{
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=等待TargetFactory.forTab(gBrowser.selectedTab);
const toolbox=wait gDevTools.showToolbox(目标,“检查器”);
const inspector=toolbox.getPanel(“inspector”);
screenshotNode();
})()

现在是坏消息。从浏览器控制台访问内容页的DOM非常棘手:(

谢谢你的评论。我考虑过无头模式,但我认为它不会很好地工作。你看,我正在尝试获取一些类型地图的详细屏幕截图,稍后将重新组装(编辑:地图在不同的缩放级别上显示不同的细节级别,这就是为什么我不只是创建一个超大视口的原因),所以在让脚本运行之前,我先进行一些视觉对齐,以确保获得正确的区域,然后脚本将操纵DOM元素并模拟已排序的按键。