【发布时间】: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