captureVisibleTab在Chrome上失败,但在Vivaldi上成功



捕获屏幕截图的最简单扩展版本如下:

manifest.json

{
"manifest_version": 2,
"name": "Screenshot",
"version": "20200507.1",
"permissions":[
"activeTab"
],
"browser_action": {
"default_popup": "popup.html"
}
}

popup.html

<!DOCTYPE html>
<html>
<body>
<button id="capture">Capture</button>
<script src="popup.js"></script>
</body>
</html>

popup.js

document.getElementById("capture").addEventListener('click', event => {
chrome.tabs.captureVisibleTab(dataURI => {
chrome.tabs.create({url: dataURI});
});
window.close();
});

作为未打包的扩展加载到Vivaldi浏览器中,它可以毫无怨言地工作。打开一个选项卡,其中包含活动选项卡的屏幕截图。然而,加载到Chrome中的同一个扩展完全没有任何作用,但也没有出现任何错误。这里少了什么?我能找到的这个代码和他们的示例代码之间的唯一区别是,这是一个弹出窗口,而不是背景脚本。

captureVisibleTab((返回Promise。正如wOxxOm所指出的那样,window.close((可能会在Promise返回之前关闭窗口。包括清单版本3的修订代码,因为清单版本2将在2023年逐步淘汰。

manifest.json

{
"manifest_version": 3,
"name": "Screenshot",
"version": "20220828.1",
"permissions":[
"activeTab"
],
"action": {
"default_popup": "popup.html"
}
}

popup.html

<!DOCTYPE html>
<html>
<body>
<button id="capture">Capture</button>
<script src="popup.js"></script>
</body>
</html>

popup.js

document.getElementById("capture").addEventListener('click', event => 
chrome.tabs.captureVisibleTab().then(dataURI => 
chrome.tabs.create({url: dataURI}).then(() => 
window.close()
)
)
);

相关内容

最新更新