php - window.open()弹出窗口被拦截.

查看:123
本文介绍了php - window.open()弹出窗口被拦截.的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

从后端传一个url, 前端收到后打开新窗口跳到这个链接.
使用 window.open(url, '_blank'); 被浏览器拦截.

请问有什么办法实现吗 ? 试了下模拟a标签点击照样拦截, 弹出div加载iframe不行, 必须要打开窗口.

问题已解决, 见采纳答案.

解决方案

这个问题首先要了解为啥会拦截,浏览器会对"非人为"的调用window.open的弹窗进行拦截,什么叫做"非人为"的,就是浏览器判断在用户操作和window.open之间不是连续的,浏览器会认为可能是流氓程序弹出的广告窗口从而进行拦截
从楼主的描述可以看出,楼主应该是进行某个操作之后,通过ajax去获取一个url,然后通过window.open打开页面,我们都知道ajax是异步的,浏览器就认为不是连续的,所以就拦截了
解决方法可以先在操作(比如点击)的时候,直接window.open,然后再去ajax获取数据,再给打开的window赋值url,大概的伪代码如下:

el.addEventListener('click',function(){
    var winHandler = window.open("","_blank");
   ajax(function(url){
        winHandler.location.href = url;
   });
    
})

这篇关于php - window.open()弹出窗口被拦截.的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆