开发浏览器扩展时出现报错:
only a single offscreen document may be created.
我是要将一个 MV2 扩展迁移到 MV3.
在 Chrome 下运行政策,但 Edge 下报错了。
Edge 版本: 129.0.2792.52 (正式版本) (64 位)
经排查发现了问题,如下代码是在创建 offscreen document 前进行判断,防止重复创建:
const offscreenUrl = chrome.runtime.getURL(path);
const existingContexts = await chrome.runtime.getContexts({
contextTypes: ["OFFSCREEN_DOCUMENT"],
documentUrls: [offscreenUrl],
});
chrome.runtime.getURL(path);在两个浏览器中表现异常:
- chrome 下:
chrome.runtime.getURL("./offscreen.html"); // 'chrome-extension://abopbmceehjmafdcffmlcifgladodjam/offscreen.html' - edge 下:
chrome.runtime.getURL("./offscreen.html"); // 'chrome-extension://abopbmceehjmafdcffmlcifgladodjam/./offscreen.html'
由于 edge 中的路径拼接问题导致判断失误,从而重复创建了 document 引发故障。
补充:
Edge 版本 134.0.3124.93 (正式版本) (64 位) 未出现上述bug。
将路径格式修改传参即可:
chrome.runtime.getURL("offscreen.html");
浙公网安备 33010602011771号