You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用setInterval轮询服务器后,PDF下载后新标签页打开遭弹窗拦截的问题求助

使用setInterval轮询服务器后,PDF下载后新标签页打开遭弹窗拦截的问题求助

各位大佬好,我碰到一个挺棘手的问题,想请大家帮忙看看:

我现在的需求是用setInterval轮询服务器,直到目标PDF文件准备好可以下载。等PDF就绪后,我会清除这个定时器,接着调用下面这个异步函数来下载并打开PDF:

async function DownloadAndOpenPdf(fileId){ 
  const ret = await Utilities.PostFunction(DownloadReportFileURL, fileId); 
  const blob = new Blob([Base64ToBinary.decodeArrayBuffer(ret.Base64EncryptedData)], { "type": ret.MimeType }); 
  const link = document.createElement('a'); 
  link.href = window.URL.createObjectURL(blob); 
  link.download = ret.FileName + ret.FileExtension; 
  link.click(); 
  window.open(link.href, "_blank"); 
}

现在的问题是:这个函数执行后,PDF确实能下载下来,但window.open打开的新标签页会被浏览器判定为弹窗拦截。可奇怪的是,如果我直接在DevTools控制台里运行这个函数,或者把它绑定到按钮的点击事件里触发,就完全正常——PDF能下载,新标签页也能顺利打开,完全不会被拦截。

我实在搞不懂哪里出问题了,想问问各位大佬:我到底漏掉了什么?怎么才能解决这个问题,让轮询结束后调用函数时,既能正常下载PDF,又不会触发浏览器的弹窗拦截呢?

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.08 07:14:28