当前位置: 首页 > 知识库问答 >
问题:

前端 - window.open()跳转,会被浏览器拦截?

邵祺
2023-09-09

问题描述

页面操作调用A接口,用A接口的返回结果当作B接口的请求参数发起请求,B接口响应成功,返回URL地址,通过window.open()跳转,被谷歌浏览器拦截……

问题出现的环境背景及自己尝试过哪些方法

尝试的方法一:先调用open打开新标签页,B接口返回后通过location实现访问。(否决原因:B接口响应慢,将出现白屏)
尝试方法二:手动创建a元素,通过该元素的点击方法跳转,依然被拦截

你期待的结果是什么?

先获取URL,再跳转,不被拦截。

共有2个答案

冯文彬
2023-09-09

让用户手动取消弹出窗口的限制吧,window.open如果返回空就说明呗拦截,这时候提示用户

钮安歌
2023-09-09

浏览器规定,在用户主动操作后的一小段时间里(忘记多久了,大概几百ms),可以 window.open(),超过了,就先屏蔽。

所以有两个方案:

  1. 更快速的响应,确保不被浏览器阻挡
  2. 获得 URL 之后换成一个比较明显的按钮之类的东西,让用户自己点
 类似资料:
  • nginx设置302跳转会被浏览器阻止,如何解决? 在宝塔面板中,设置了网站A设置302跳转到B会被浏览器阻止,这个应该如何解决呢?AB网站均配置SSL,属于两个不同的域名。 例如:a.com/login 跳转到 b.com/login

  • 本文向大家介绍使用window.open(url)下载文件时为什么会被浏览器拦截?如何解决?相关面试题,主要包含被问及使用window.open(url)下载文件时为什么会被浏览器拦截?如何解决?时的应答技巧和注意事项,需要的朋友参考一下 如果浏览器发现window.open下载文件不是由用户触发,则会拦截 解决方案,二选一: 1.将window.open放在按钮的单击事件中执行 2.动态创建一个

  • 问题内容: 我有这样的代码: 当从任何代码位置调用此方法都很好,但是当我在promise中使用它时(见下文),它总是被浏览器阻止。有什么建议? 承诺是有角度的。 问题答案: 响应您从Ajax请求获得HTTP响应而触发Promise。这不是用户触发的事件,因此会阻止弹出窗口。使用用户给您的窗口,而不是创建一个新窗口。

  • vue的app点击跳转调用浏览器打开,有实现过的吗

  • 问题内容: 单击图像后,是否可以将其下载(没有右键单击 将图像另存为 )? 我正在使用一个小的Javascript函数来调用下载页面: 在download.php页面中,我有类似以下内容: 但这是行不通的。我究竟做错了什么? 提前致谢! 问题答案: 使用 application / octet- stream 代替 image / jpg : 如果在应用程序/八位字节流内容类型的响应中使用[Con

  • vue响应式 diff vuex pinia nextTick webpack打包流程 性能调优配置 插件tabable库 pnpm 前端监控 异步错误捕获 ts泛型(寄) http缓存 https 算法:①求某时刻时针和分针的夹角(度数相减) ②类似vue模版编译 (正则)