NotAllowedError: Должен обрабатывать пользовательский жест для выполнения запроса на совместное использование. navigator.share - PullRequest
1 голос
/ 14 мая 2019

У меня есть простая страница с некоторыми деталями, чьи действия я выполняю с помощью AJAX-запроса. При успешном обратном вызове вызова AJAX я пытаюсь вызвать navigator.share, что выдает ошибку:

NotAllowedError: Должен обрабатывать пользовательский жест для выполнения запроса на совместное использование.

Пример кода выглядит так:

$("#form-button").on('click', function (event) {
  var ele = $(this);
  event.preventDefault();
  $.ajax({
    // ...
    dataType: "json",
    data: { "foo": "bar" },
    success: function (response) {
      if (navigator.share) {
        navigator.share({
          title: response.text,
          text: response.text,
          url: response.href
        }).then(function () {
          alert('Successful share')
        }).catch(function (error) {
          alert('Error sharing: ' + error);
        });
      }
    },
  });
});

Голосование от Сайт разработчика Google заявляет:

... вы можете вызывать API только в ответ на действие пользователя, такое как щелчок (например, вы не можете вызвать navigator.share как часть загрузки страницы)

Это работает, если у меня нет вызова AJAX и я напрямую запускаю navigator.share под событием click, но не когда я помещаю его в обратный вызов AJAX. Я надеялся, что API проверит цепочку событий.

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

...