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()
        )
    )
);
Другие вопросы по тегам