Unhandled Rejection (NotAllowedError): в Safari при записи в Clipboard

Хотел взять <svg> элемент, конвертировать в blob и записать в Clipboard. Изначальный код:

let chart1 = document.getElementsByClassName('function-plot')[0]
    htmlToImage.toBlob(chart1)
      .then(function (dataUrl) {
        let img = new Image();
        img.src = dataUrl;
        try {
          navigator.clipboard.write([
            new window.ClipboardItem({
                'image/png': dataUrl
            })
          ]);
        } catch (error) {
          console.error(error);
          }
        console.log(dataUrl)
      })
      .catch(function (error) {
        console.error('oops, something went wrong!', error);
      });

Работает в Chrome, но ломается в Safari.

Ошибка: Unhandled Rejection (NotAllowedError): The request is not allowed by the user agent or the platform in the current context, possibly because the user denied permission. И указывает на строку с navigator.clipboard.write.

Попробовал добавить Promise в try-catch (остальной код такой же):

try {
     navigator.clipboard.write([
     new window.ClipboardItem({
        'image/png': new Promise((resolve) => {
           resolve(new Blob([dataUrl], { type: 'image/png' }));
            }),
         })
      ]);  
     } catch (error) {
       console.error(error);
       }

Но ошибка остаётся, при этом в Chrome работает. Подскажите, пожалуйста, как сделать сохранение в Clipboard, которое будет работать как минимум в вышеперечисленных браузерах?


Ответы (0 шт):