Уровень API общего доступа к веб-ресурсам 2 DOMException: в доступе отказано - PullRequest
1 голос
/ 08 ноября 2019

Я загружаю img, превращаю его в файл, а затем пытаюсь поделиться этим файлом. Я протестировал код на последнем Chrome на Android (единственный браузер, который в настоящее время поддерживает этот API).

  if (shareimg && navigator.canShare) {
    share = async function() {
      const response = await fetch(shareimg);
      const blob = await response.blob();
      const file = await new File([blob], "image.jpeg");

      navigator.share({
        url: shareurl,
        title: sharetitle,
        text: sharetext,
        files: [file]
      });
    };
  }

Я запускаю функцию в ответ на нажатие пользователем кнопки (метод share () должен вызываться из пользовательского жеста, иначе он не будет работать).

(я тестирую этот код с помощью Browserstack, который предоставляет консоль для ошибок javascript, поскольку я не смог успешно связать свое устройство Android с моим Mac для отладки, и этот API работает только на мобильных телефонах - не на Chromeдля рабочего стола.)

1 Ответ

0 голосов
/ 08 ноября 2019

Ваш код может быть немного оптимизирован. В настоящее время необходимо указать тип MIME для большого двоичного объекта. Вы можете проверить код ниже на практике здесь: https://statuesque -backpack.glitch.me / .

if ('canShare' in navigator) {
  const share = async function(shareimg, shareurl, sharetitle, sharetext) {
    try {
      const response = await fetch(shareimg);
      const blob = await response.blob();
      const file = new File([blob], 'rick.jpg', {type: blob.type});

      await navigator.share({
        url: shareurl,
        title: sharetitle,
        text: sharetext,
        files: [file]
      });
    } catch (err) {
      console.log(err.name, err.message);
    }
  };

  document.querySelector('button').addEventListener('click', () => {
    share(
      'https://upload.wikimedia.org/wikipedia/commons/thumb/4/41/Rick_Astley_Dallas.jpg/267px-Rick_Astley_Dallas.jpg',
      'https://en.wikipedia.org/wiki/Rick_Astley',
      'Rick Astley',
      'Never gonna give you up!'
    );
  });  
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...