Javascript 是否防止在Windows.open上自动对焦以进行ios?

Javascript 是否防止在Windows.open上自动对焦以进行ios?,javascript,jquery,ios,ajax,window.open,Javascript,Jquery,Ios,Ajax,Window.open,在我正在处理的管理区域中,我有以下单击处理程序。基本上,网站上有一个包含所有用户帐户的表格,我可以单击一个登录按钮,让每个用户在新窗口中以该用户的身份登录。这是出于支持的原因,我需要在他们的帐户中做一些事情 为了避免浏览器中出现弹出警告,因此它实际上可以在mobile safari中工作。。。我打开一个空白的新窗口“UserLogin”点击。。。ajax运行并返回一个响应,其中我在true上打开url,或者在false上写消息 除了mobilesafari(ios)之外,在我测试过的浏览器中,一

在我正在处理的管理区域中,我有以下单击处理程序。基本上,网站上有一个包含所有用户帐户的表格,我可以单击一个登录按钮,让每个用户在新窗口中以该用户的身份登录。这是出于支持的原因,我需要在他们的帐户中做一些事情

为了避免浏览器中出现弹出警告,因此它实际上可以在mobile safari中工作。。。我打开一个空白的新窗口“UserLogin”点击。。。ajax运行并返回一个响应,其中我在true上打开url,或者在false上写消息

除了mobilesafari(ios)之外,在我测试过的浏览器中,一切都很好。单击后,焦点转移到我的新空白窗口并“停止”。如果我回到原来的窗口,ajax就会启动,焦点就会回到加载url或消息的新窗口。因此,看来我需要一种方法来防止焦点在原来的
window.open(“”,'UserLogin')上发生变化

有什么想法吗?我知道这样做有点麻烦,但是你不能从ajax打开一个新窗口。。。浏览器会弹出警告,ios甚至不会做任何事情。新窗口需要直接连接到单击事件,以防止出现这种情况,这就是为什么我要这样做的原因

// user login in new window
$('#datatable').on('click', '.dtLogin', function () {

    //open blank window to prevent popup warnings in browser
    window.open('', 'UserLogin');

    var data = {
      'account_id': $(this).parents('tr').attr('id')
    };

    $.ajax({
        type: 'post',
        url: '/test/process/p_user_login.php',
        data: data,
        dataType : 'json'
    }).done(function (response) {

        if (response.success)
        {                   
            window.open('http://www.test.com/', 'UserLogin');

            // show success message
            $("#dtAlert").html('<div class="alert alert-dt alert-info alert-dismissable"><button class="close" aria-hidden="true" data-dismiss="alert" type="button"></button><strong>Success!</strong> &nbsp;You have been logged in as user \'<b>'+response.username+'</b>\'.</div>');                            
            alertCount = 0;

            // show success toast
            toastr.info('You have been logged in as user \'<b>'+response.username+'</b>\'.');
        } 
        else
        {
            // show error message
            $("#dtAlert").html('<div class="alert alert-dt alert-danger alert-dismissable"><button class="close" aria-hidden="true" data-dismiss="alert" type="button"></button><strong>Error!</strong> &nbsp;An error has occurred. &nbsp;Please contact support.</div>');                         
            alertCount = 0;

            // show error toast
            toastr.error('An error has occurred. &nbsp;Please contact support.', 'Error');

            loginWindow.document.open();
            win.document.write('Error : Could not login to the user account.');
            win.document.close();

        }
    });
});
//用户在新窗口中登录
$('#datatable')。在('click','.dtLogin',函数(){
//打开空白窗口以防止在浏览器中弹出警告
window.open(“”,'UserLogin');
风险值数据={
“帐户id:$(this).parents('tr').attr('id'))
};
$.ajax({
键入:“post”,
url:“/test/process/p_user_login.php”,
数据:数据,
数据类型:“json”
}).完成(功能(响应){
if(response.success)
{                   
打开窗户http://www.test.com/'、'UserLogin');
//显示成功消息
$(“#dtAlert”).html(“成功!您已以用户\''+-response.username+'\'的身份登录);
alertCount=0;
//致祝酒辞
toastr.info('您已以用户\''+response.username+'\'.'的身份登录);
} 
其他的
{
//显示错误消息
$(“#dtAlert”).html(“错误!发生错误。请与支持部门联系。”);
alertCount=0;
//显示错误土司
toastr.error('发生错误。请与支持人员联系','错误');
loginWindow.document.open();
win.document.write('错误:无法登录到用户帐户');
win.document.close();
}
});
});

在打开另一个窗口之前,您是否尝试过“启动”ajax请求?我的意思是把它放在
$.ajax().done()
下面。它可能会工作,因为
$。ajax
是异步的。。。打开的窗口必须直接连接到单击事件。如果没有,它将显示弹出警告,甚至不会像ios那样被处理。是的,我明白了。它仍然会在点击事件中,只是不在顶部<代码>$.ajax
是异步的(基本上意味着脚本在运行下一个命令之前不会等待它完成)。我想,如果在窗口打开之前启动ajax,它也可以被执行,那么它就可以工作了。。。不幸的是,这与我当前的方法具有相同的效果。单击后,新的空白窗口将以焦点打开。我必须返回到原始页面,然后它有一个重定向类型的操作,它会立即返回到新窗口并加载我的url。但这只适用于移动狩猎。。。常规浏览器和我的一样工作正常。