我正在处理的管理区域中有以下点击处理程序。基本上,网站上有一个包含所有用户帐户的表格,我可以点击每个用户的登录按钮,在新窗口中登录该用户。这是出于支持原因,我需要在他们的帐户中执行操作。
为了避免浏览器中的弹出警告,所以它实际上可以在移动Safari中使用...我打开一个空白的新窗口'UserLogin'点击... ajax运行并返回一个响应,我打开网址上的真实或写错信息。
除了移动游猎(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> 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> An error has occurred. Please contact support.</div>');
alertCount = 0;
// show error toast
toastr.error('An error has occurred. Please contact support.', 'Error');
loginWindow.document.open();
win.document.write('Error : Could not login to the user account.');
win.document.close();
}
});
});