为什么navigator.share()在fetch API中不能工作?

问题描述 投票:0回答:1

我遇到了一个非常有趣的问题,navigator.share()在fetch外可以正常工作,但在fetch内就不行了。

工作。

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'})
}))

EDIT: 我目前正在IOS的Safari和Chrome上测试。

javascript ecmascript-6 fetch es6-promise navigator
1个回答
0
投票

我认为问题来自于这个要求。

它必须在响应用户操作时被调用,比如点击。通过onload handler调用它是不可能的。 (https:/web.devweb-share。)

如果你直接从点击事件中分享,似乎是可以的。如果你在callbackpromise之后分享,那就不行了--如果这个promecallback函数是从点击事件中调用的事件(至少在iOS上)。浏览器应该在调用栈中看到用户的操作。

我也碰到过这种情况。我认为它的行为更像是一个bug,而不是一个功能,因为它阻止了动态共享的可能性。

解决办法: 要分享的数据必须在实际分享的时刻可用。因此,你可能需要显示另一个按钮或其他东西来分享你获取的数据。

© www.soinside.com 2019 - 2024. All rights reserved.