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, абсолютно ничего не делает и при этом не вызывает ошибок. Чего здесь не хватает? Единственное различие, которое я могу найти между этим кодом и их примером кода, заключается в том, что это всплывающее окно, а не фоновый скрипт.
1 ответ
CaptureVisibleTab() возвращает обещание . как обещание вернется, как указано wOxxOm . Включение пересмотренного кода для манифеста версии 3 в манифест версии 2 будет прекращено в 2023 году. user3959875
manifest.json
{
"manifest_version": 3,
"name": "Screenshot",
"version": "20220828.1",
"permissions":[
"activeTab"
],
"action": {
"default_popup": "popup.html"
}
}
всплывающее окно.html
<!DOCTYPE html>
<html>
<body>
<button id="capture">Capture</button>
<script src="popup.js"></script>
</body>
</html>
всплывающее окно.js
document.getElementById("capture").addEventListener('click', event =>
chrome.tabs.captureVisibleTab().then(dataURI =>
chrome.tabs.create({url: dataURI}).then(() =>
window.close()
)
)
);