ajax请求window.open()被拦截
发布时间:2020-12-16 02:56:55 所属栏目:百科 来源:网络整理
导读:项目使用ajax post后根据返回的success,需要打开一个新页面,使用window.open发现谷歌浏览器直接被拦截。 后来了解发现该操作并不是用户主动触发的,所以它认为这是不安全的就拦截了,即使 ajax 回调函数中模拟执行 click 或者 submit 等用户行为(trigger(
项目使用ajax post后根据返回的success,需要打开一个新页面,使用window.open发现谷歌浏览器直接被拦截。 后来了解发现该操作并不是用户主动触发的,所以它认为这是不安全的就拦截了,即使 ajax 回调函数中模拟执行 click 或者 submit 等用户行为(trigger(‘click‘)), 浏览器也会认为不是由用户主动触发的,因此不能被安全执行,所以也会被拦截。废话不多说,直接上终极解决办法 解决方法: var newwin = window.open(); // 这句必须在ajax之前定义 $.ajax({ type: ‘POST‘,url: ‘/do.php‘,dataType: ‘json‘,error: function(){ newwin.close(); },success: function(data){ newwin.location = data.url; } }); 也没首页会打开一个空白页面随后跳转到返回的url上,期间时间间隔很短。如果异步请求执行快几乎没有啥影响。 经测谷歌/360浏览器正常。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |