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

转自https://www.cnblogs.com/shizk/p/8458916.html $('#btn').click(function () { //打开一个不被拦截的新窗口 var newWindow = window.open(); $.ajax({ url: 'xxxx.com', success: function (url) { //修改新窗口的url newWindow.location.href = url; } }) });//先在回调函数之前打开新窗口,后再加载url…
问题现象 当我们在一个 ajax 回调中执行 window.open 方法时,新页面会被浏览器拦截. 原因 在 Chrome 的安全机制里,非用户直接触发的 window.open 方法,是会被拦截的. 处理 $('#jump-btn').on('click', function () { // 打开一个空标签页(此处不会被拦截) var newTarget = window.open(); $.ajax({ data: data, success: function (url) { // 修改…
在浏览器的安全机制里,非用户触发的window.open方法是会被拦截的,例如: var btn = $('#btn'); btn.click(function () { // 算做用户触发,所以不会被拦截 window.open('http://cssha.com') }); 上面的window.open是用户click触发的,所以不会被拦截,可以正常打开新窗口.再看下面这个: var btn = $('#btn'); btn.click(function () { $.ajax({ url:…
下面代码一切从简,大家理解即可 一.原因:1.因为在chrome的安全机制里面,非用户触发的window.open方法,是会被拦截的: 二.什么情况下不会被拦截或会被拦截? 1. $('#btn').click(function () { //不会被拦截 window.open(url) }); 2. $('#btn').click(function () { $.ajax({ url: 'xxxx.com', success: function (url) { //会被拦截 window.op…
一.原因:1.因为在chrome的安全机制里面,非用户触发的window.open方法,是会被拦截的: 二.什么情况下不会被拦截或会被拦截? 1. $('#btn').click(function () { //不会被拦截 window.open(url) }); 2. $('#btn').click(function () { $.ajax({ url: 'xxxx.com', success: function (url) { //会被拦截 window.open(url); } }) })…
一般我们在打开页面的时候, 最常用的就是用<a>标签,如果是新窗口打开就价格target="_blank"属性就可以了, 如果只是刷新当前页面就用window.location.reload(), 在某些特殊情况下也要用到另外一种新窗口打开的方法,就是window.open(),这个方法有一个问题就是会被基本所有的浏览器所拦截,要收到点击确认打开才可以,这样的体验可以说是非常不友好的~~ 感觉像一个有病毒的程序~~ 所以我们如果一定要用这个方法,但是又不想其被浏览器拦截,…
存在问题:处理页面ajax请求过程中,异步请求成功后需要新开窗口打开 url,使用的是 window.open() 方法 来实现,最终都被浏览器拦截了.不会跳到对应的页面,如下 原因:浏览器之所以拦截新开窗口因为该操作不是用户主动触发的,它认为这是不安全的所以拦截了( _self 不会限制),即使 ajax 回调函数中执行 click 或者 submit 等用户行为(trigger('click')),浏览器也会认为不是由用户主动触发的,不能被安全执行,所以被拦截. 百度了很多方法:比如 1:下…
现象 最近在做项目的时候碰到了使用window.open被浏览器拦截的情况,搞得人无比郁闷啊,虽然在自己的环境可以对页面进行放行,但是对用户来说,不能要求用户都来通过拦截.何况当出现拦截时,很多小白根本不知道发生了啥,不知道在哪里看被拦截的页面,简直悲催啊~~. 另外,可以发现,当window.open为用户触发事件内部或者加载时,不会被拦截,一旦将弹出代码移动到ajax或者一段异步代码内部,马上就出现被拦截的表现了. 原因分析&深入研究 当浏览器检测到非用户操作产生的新弹出窗口,则会对其进行阻…
最近做项目的时候,点击事件的时候遇到了window .open()被浏览器拦截的情况,虽然在自己的开发环境中都能正常使用,但是放在测试环境中window.open()就是不能使用, 后来经过测试,单纯的运行window.open()可以打开新页面,但是放在ajax或者一段异步的代码中,就回出现浏览器拦截问题,后来经过反复测试,最终得到window.open()在同步的代码中是显示正常的,所以在ajax代码中把异步改为同步就能解决问题. $.ajax({ type : "POST", a…
今天在处理程序的过程中,发现window.open方法会被浏览器拦截,导致无法打开新页面,查阅相关资料后发现,主要原因是浏览器为了维护用户安全和体验,禁止在javascript中直接使用window.open(url)来打开新的链接,window.open(url,”_self”)改变当前的窗口是可以生效的.为了实现window.open打开新窗口不被浏览器拦截,我们只能通过模拟用户操作的方式来实现. 我们可以模拟用户点击a标签的操作来实现这个功能,代码如下: //新窗口打开网页function…