【发布时间】:2019-05-14 18:45:01
【问题描述】:
我有一个简单的页面,其中包含我通过 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 developer site的吴婷说:
...您只能调用 API 以响应用户操作,例如点击(例如,您不能在页面加载过程中调用 navigator.share)
如果我没有 AJAX 调用并在点击事件下直接触发 navigator.share 时它可以工作,但当我将其放入 AJAX 回调时则不会。我希望 API 会检查事件链。
我必须使用哪些替代方法才能使其发挥作用?我试过保留一个虚拟按钮并触发点击。
【问题讨论】:
-
你找到解决办法了吗?我在角度方面面临同样的问题。
标签: jquery google-chrome share mobile-chrome