阻止自动关注window.open for ios?

时间:2014-04-28 17:16:56

标签: javascript jquery ios ajax window.open

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

为了避免浏览器中的弹出警告,所以它实际上可以在移动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> &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();

        }
    });
});

0 个答案:

没有答案