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

前端 - 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 之后换成一个比较明显的按钮之类的东西,让用户自己点
 类似资料:
  • 本文向大家介绍使用window.open(url)下载文件时为什么会被浏览器拦截?如何解决?相关面试题,主要包含被问及使用window.open(url)下载文件时为什么会被浏览器拦截?如何解决?时的应答技巧和注意事项,需要的朋友参考一下 如果浏览器发现window.open下载文件不是由用户触发,则会拦截 解决方案,二选一: 1.将window.open放在按钮的单击事件中执行 2.动态创建一个

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

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

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

  • 问题内容: 我目前正在使用Twitter Bootstrap开发一个响应式网站。 该网站在移动设备/平板电脑/桌面上具有全屏背景图片。这些图像使用两个div旋转并逐渐淡入。 除了一个问题,它几乎是完美的。使用iOS Safari,Android浏览器或Android上的Chrome,当用户向下滚动页面并导致地址栏隐藏时,背景会略微跳动。 在移动设备上访问它并向下滚动,您应该会看到图像调整大小/移动

  • 本文向大家介绍Ajax打开新窗口被浏览器拦截的两种解决办法,包括了Ajax打开新窗口被浏览器拦截的两种解决办法的使用技巧和注意事项,需要的朋友参考一下 最近在做支付时发现打开支付窗口时被浏览器拦截了,百度了一下才发现是因为打开窗口前用ajax验证是否能支付,所以不是用户主动触发的打开ixin窗口,浏览器认为这样不安全,所以给拦截了。 解决办法一 先开始打开一个空的新窗口,然后改变新窗口的url,具