在写后台动态传前台资源链接的时候,需要用到,返回后直接在新窗口打开。开发使用的谷歌浏览器,使用window.open(),测试的时候,发现总是被拦截,这这里记录下解决的方法。
找了写资料,说是当非用户触发的window.open()方法时,由于谷歌的安全机制,通常是会被拦截的,除非人工取消拦截。比如下面两个例子:当用户没有直接发出window.open()请求的时候,不是直接调用,而是在回调函数里调用,则会被拦截。
//不会被拦截$('#btn').click(function () {window.open(url)});
$('#btn').click(function () {$.ajax({url: 'a/aa',success: function (url) {//会被拦截window.open(url);}})});
解决方法:先在回调函数之前打开新窗口,后再加载url
$('#btn').click(function () {//打开一个不被拦截的新窗口var newWindow = window.open();$.ajax({url: 'a/aa',success: function (url) {//修改新窗口的urlnewWindow.location.href = url;}})});
欢迎指导!
千而の大狮子!