我遇到了一个非常有趣的问题,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上测试。
我认为问题来自于这个要求。
它必须在响应用户操作时被调用,比如点击。通过onload handler调用它是不可能的。 (https:/web.devweb-share。)
如果你直接从点击事件中分享,似乎是可以的。如果你在callbackpromise之后分享,那就不行了--如果这个promecallback函数是从点击事件中调用的事件(至少在iOS上)。浏览器应该在调用栈中看到用户的操作。
我也碰到过这种情况。我认为它的行为更像是一个bug,而不是一个功能,因为它阻止了动态共享的可能性。
解决办法: 要分享的数据必须在实际分享的时刻可用。因此,你可能需要显示另一个按钮或其他东西来分享你获取的数据。