【问题标题】:Firefox: captureVisibleTab appears to hangFirefox:captureVisibleTab 似乎挂起
【发布时间】:2021-11-11 03:40:09
【问题描述】:

我正在尝试制作一个 Firefox 扩展,它将添加一个按钮来截取活动标签的屏幕截图。当我调用“captureVisibleTab”时,调用似乎挂起 - 该函数永远不会执行下一行。显示问题的最少代码:

let shotBtn = document.createElement("button");
shotBtn.innerHTML = "Shot";
shotBtn.onclick = function () {
    takeShot();
};
document.body.appendChild(leftBtn);

async function takeShot() {
    leftBtn.innerHTML = "Start"; // This line executes.
    const shot = await browser.tabs.captureVisibleTab();
    leftBtn.innerHTML = "Done";  // This line does not.
}

我看到按钮文本变为“开始”,但我没有看到它变为“完成”。

我尝试了一些变体:删除“等待”并添加“shot.then”处理,并将 captureVisibleTab 调用直接放在 onclick 方法中,而不是单独的异步方法中。我已在清单中添加了权限“”,但不确定我是否已获得该权限 - 有没有办法检查?

我通常是 JavaScript 和 Web 扩展的新手,所以我对这个异步函数应该如何工作的理解很可能存在一些基本缺陷。是否有可能一些垃圾收集器在完成执行之前抓住了函数对象?如果是这样,我怎样才能在“onclick”方法中避免这种情况?

【问题讨论】:

    标签: javascript firefox-addon firefox-addon-webextensions


    【解决方案1】:

    在写下我的问题之前,我应该更深入地阅读。我试图在不允许使用 captureVisibleTab 的内容脚本中执行上述操作;您必须在后台脚本中执行此操作。如果像我一样,你是 web 开发的菜鸟,并且刚刚知道存在这种区别,你可以阅读它here

    【讨论】:

      猜你喜欢
      • 2016-05-15
      • 1970-01-01
      • 2015-06-19
      • 2021-06-02
      • 2012-08-08
      • 1970-01-01
      • 2013-03-11
      • 2014-04-22
      • 1970-01-01
      相关资源
      最近更新 更多