提供我的代码
//
debugger;
Ext.Ajax.request({
async: false,
url: sports.util.Utils.getContextPath() + '/tabClicks.do',
答案 0 :(得分:1)
您的代码有点奇怪,因此很难正确调整,但这是它的要点:
showNewWindow: function(menu) {
var me = this,
newWindowId = sports.util.Utils.randomString(12);
//
// Make a synchronous request so that the new window will
// not load as a popup.
//
debugger;
var popup = sports.util.Utils.openNewWindow('', 'menu', {}, null, null, newWindowId);
Ext.Ajax.request({
async: false,
url: sports.util.Utils.getContextPath() + '/tabClicks.do',
params: {
oldWindowId: sports.util.Utils.getWindowName(),
newWindowId: newWindowId
},
success: function() {
popup.location.href = "/desktop/main";
},
scope: me
});
},
答案 1 :(得分:0)
弹出窗口阻止程序尝试通过直接响应用户操作或应用程序自发地判断何时打开窗口。他们可能这样做的方法是检查调用window.open()
的函数是否运行以响应用户触发的事件,如鼠标点击。
执行同步AJAX请求时,当响应到达且成功函数调用window.open
时,鼠标单击触发的函数仍在运行。所以它被认为是用户请求的窗口,而不是弹出窗口。
使用异步AJAX时,成功函数运行时,单击处理程序不再运行。浏览器认为对window.open
的异步调用是自发的,因此它会阻止它。
我认为没有办法解决这个问题,因为你能做的任何事情都可以被其他人用来绕过弹出窗口拦截器,而且它们也没用。
答案 2 :(得分:0)
function openNewWin(name) {
$.ajax({
async: false,
type: 'POST',
url: 'your url',
success: function () {
window.open(name);
},
async: false
});
}