window.open 防止浏览器拦截】的更多相关文章

现象 最近在做项目的时候碰到了使用window.open被浏览器拦截的情况,搞得人无比郁闷啊,虽然在自己的环境可以对页面进行放行,但是对用户来说,不能要求用户都来通过拦截.何况当出现拦截时,很多小白根本不知道发生了啥,不知道在哪里看被拦截的页面,简直悲催啊~~. 另外,可以发现,当window.open为用户触发事件内部或者加载时,不会被拦截,一旦将弹出代码移动到ajax或者一段异步代码内部,马上就出现被拦截的表现了. 原因分析&深入研究 当浏览器检测到非用户操作产生的新弹出窗口,则会对其进行阻…
最近做项目的时候,点击事件的时候遇到了window .open()被浏览器拦截的情况,虽然在自己的开发环境中都能正常使用,但是放在测试环境中window.open()就是不能使用, 后来经过测试,单纯的运行window.open()可以打开新页面,但是放在ajax或者一段异步的代码中,就回出现浏览器拦截问题,后来经过反复测试,最终得到window.open()在同步的代码中是显示正常的,所以在ajax代码中把异步改为同步就能解决问题. $.ajax({ type : "POST", a…
一.问题描述 最近在做项目的时候碰到了使用window.open被浏览器拦截的情况,虽然在自己的环境可以对页面进行放行,但是对用户来说,不能要求用户都来通过拦截.何况当出现拦截时,很多用户根本不知道发生了啥,不知道在哪里看被拦截的页面.因此必须通过代码来解决这个问题! 以下是浏览器拦截示例:  二.问题分析  浏览器之所以拦截新开窗口是因为该操作并不是用户主动触发的,所以它认为这是不安全的就拦截了,即使 ajax 回调函数中模拟执行 click 或者 submit 等用户行为(trigger('…
今天在处理程序的过程中,发现window.open方法会被浏览器拦截,导致无法打开新页面,查阅相关资料后发现,主要原因是浏览器为了维护用户安全和体验,禁止在javascript中直接使用window.open(url)来打开新的链接,window.open(url,”_self”)改变当前的窗口是可以生效的.为了实现window.open打开新窗口不被浏览器拦截,我们只能通过模拟用户操作的方式来实现. 我们可以模拟用户点击a标签的操作来实现这个功能,代码如下: //新窗口打开网页function…
https://blog.csdn.net/sinat_37255207/article/details/89374416 网上试了很多方法 最终只有一种可以 var newWin = window.open('https://www.baidu.com/'); wxPublic().then(res=>{ // 重定向到目标页面 if(res.data.statusCode!='200'){ newWin.location.href ='404页面'; return; } newWin.loc…
一般我们在打开页面的时候, 最常用的就是用<a>标签,如果是新窗口打开就价格target="_blank"属性就可以了, 如果只是刷新当前页面就用window.location.reload(), 在某些特殊情况下也要用到另外一种新窗口打开的方法,就是window.open(),这个方法有一个问题就是会被基本所有的浏览器所拦截,要收到点击确认打开才可以,这样的体验可以说是非常不友好的~~ 感觉像一个有病毒的程序~~ 所以我们如果一定要用这个方法,但是又不想其被浏览器拦截,…
ajax请求中用window.open()打开请求返回url(例如实现下载功能时),可能会因为跨域问题导致浏览器拦截 解决办法是:在请求前,打开一个窗口,请求成功后将返回的url直接赋值给该窗口的href,如下 downPkg() { var mywin = window.open('','_self'); //注意一定要在请求前操作此步 this.$server.getPackage_async().then(res => { //这里是自己封装的ajax方法 ^_^ if (res.resu…
存在问题:处理页面ajax请求过程中,异步请求成功后需要新开窗口打开 url,使用的是 window.open() 方法 来实现,最终都被浏览器拦截了.不会跳到对应的页面,如下 原因:浏览器之所以拦截新开窗口因为该操作不是用户主动触发的,它认为这是不安全的所以拦截了( _self 不会限制),即使 ajax 回调函数中执行 click 或者 submit 等用户行为(trigger('click')),浏览器也会认为不是由用户主动触发的,不能被安全执行,所以被拦截. 百度了很多方法:比如 1:下…
问题现象 当我们在一个 ajax 回调中执行 window.open 方法时,新页面会被浏览器拦截. 原因 在 Chrome 的安全机制里,非用户直接触发的 window.open 方法,是会被拦截的. 处理 $('#jump-btn').on('click', function () { // 打开一个空标签页(此处不会被拦截) var newTarget = window.open(); $.ajax({ data: data, success: function (url) { // 修改…
ajax回调打开新窗体防止浏览器拦截,就这么做! 问题剖析:   1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 function click_fun(){    window.open("www.baidu.com");//能打开   $.ajax({     'url': '${pageContext.request.contextPath}/activity/savePrizes.htm',     'type': 'post',     'dataTyp…