为什么navigator.share()在提取API中不起作用?

时间:2019-10-26 16:50:51

标签: javascript ecmascript-6 fetch es6-promise navigator

我遇到了一个非常有趣的问题,其中navigator.share()在抓取操作之外运行良好,但在内部运行不正常。

作品:

navigator.share({title: '1 Test title', text: '1 Test text'})

不起作用:

fetch('https://api.github.com/orgs/nodejs').then(r => r.json().then(d => {
    navigator.share({title: '2 Test title', text: '2 Test text'})
}))

编辑:我目前正在IOS Safari和Chrome上对其进行测试。

1 个答案:

答案 0 :(得分:0)

我认为问题来自此要求:

必须响应用户操作(例如单击)来调用它。通过onload处理程序调用它是不可能的。 (https://web.dev/web-share/

如果您直接通过点击事件进行分享,那似乎还可以。如果您在回调/承诺后共享,则不行-如果通过单击事件(至少在iOS上)调用了此promise /回调函数,则为事件。浏览器应该在调用堆栈中看到用户操作。

我也遇到了这个问题。我认为它的行为更像是错误而不是功能,因为它阻止了动态共享的可能性。

解决方案:要共享的数据必须在实际共享时可用。因此,您可能需要显示另一个按钮或其他内容来共享您获取的数据。