Javascript 为什么OpenLink在iPad Safari上的异步处理程序中不起作用?
下面是一些关于以编程方式打开空白链接的奇怪事情 环境:Javascript 为什么OpenLink在iPad Safari上的异步处理程序中不起作用?,javascript,reactjs,async-await,mobile-safari,Javascript,Reactjs,Async Await,Mobile Safari,下面是一些关于以编程方式打开空白链接的奇怪事情 环境: 设备:iPad14 浏览器:Safari最新版本 一个按钮正在处理异步等待操作,然后触发打开链接作为空目标。我不知道为什么它不起作用 <button onClick={async () => { // handling some await heavy operation // await until it succeed window.open('some url', '_blank'); // this is
- 设备:iPad14
- 浏览器:Safari最新版本
<button onClick={async () => {
// handling some await heavy operation
// await until it succeed
window.open('some url', '_blank'); // this is not working
} />
{
//处理一些等待重操作
//等待成功
window.open('someurl','u blank');//这不起作用
} />
欢迎提出任何建议 浏览器倾向于阻塞
窗口。如果调用不能直接绑定到用户交互,例如单击或其他操作,请打开。通过引入任何异步的东西,你就破坏了直接连接。对于浏览器来说,这看起来是一样的,就像你试图在没有任何用户交互的情况下打开这个弹出窗口一样——这是垃圾邮件广告弹出窗口的典型标志,因此它被阻止了
基本上,您只能直接单击按钮打开弹出窗口,然后根据异步操作的结果更改弹出窗口中加载的URL。(打开带有空URL的弹出窗口或about:blank
通常是有效的,如果您在点击按钮时没有真正的目标URL,并且必须等待异步操作才能获得它。)浏览器倾向于阻塞窗口。如果调用不能直接绑定到用户交互,请打开,比如咔嗒一声什么的。通过引入任何异步的东西,你就破坏了直接连接。对于浏览器来说,这看起来是一样的,就像你试图在没有任何用户交互的情况下打开这个弹出窗口一样——这是垃圾邮件广告弹出窗口的典型标志,因此它被阻止了。非常感谢你的快速评论,这是合理的。你对这种情况下的手术有什么建议?真的很感激!基本上,您只能直接单击按钮打开弹出窗口,然后根据异步操作的结果更改弹出窗口中加载的URL。(打开弹出窗口时使用about:blank
,因为“URL”通常是有效的,如果您在点击按钮时没有真正的目标URL,并且必须等待异步操作才能获得它。)太棒了,谢谢!顺便说一句,我可以像下面这样解决这个问题:const newTabInstance=window.open('''u blank')
//等待处理程序
非常感谢您的努力!酷!我根据我的评论创建了一个答案。