2011-12-26 6 views
0

У меня есть эта функция:Javascript Всплывающие window.focus

var replyTo = null; 
var windWidth = 730; 
var windHeight = 550; 
var windTop = parseInt((screen.availHeight - windHeight)/3); 
var windLeft = parseInt((screen.availWidth - windWidth)/2); 

function windowPreOpen() { 
    replyTo = window.open('', 'Connect With Twitter', 'width=' + windWidth + ', height=' + windHeight + ', left=' + windLeft + ', top=' + windTop + ', scrollbars, resizable'); 
    window.focus(); 
}; 

function makeReplyTo() { 
    windowPreOpen(); 
    var user_id = "3"; 
    var data = $.ajax({ 
     type: "POST", 
     url: "uspolitics_pulse/functions.php", 
     data: { 
      type: 'checkOauth', 
      user_id: user_id 
     }, 
     success: function (data) { 
      if (data) { 
       replyTo = window.open(data, 'Connect With Twitter', 'width=' + windWidth + ', height=' + windHeight + ', left=' + windLeft + ', top=' + windTop + ', scrollbars, resizable'); 
       replyTo.focus(); 
      } else { 
       replyTo.close() 
       replyTo = $.prettyPhoto.open(''); 
      } 
     } 
    }); 
} 

Он содержит небольшой трюк, чтобы избежать блокировки всплывающих окон моего всплывающего окна. Открывает пустое всплывающее окно, а затем заменяет его правой.

Проблема заключается в том, что я должен скрыть первое всплывающее окно в главном окне, а затем сосредоточиться на новом.

Но когда я пытаюсь использовать replyTo.focus(); всплывающее окно остается скрытым за основным, и похоже, что я ничего не могу сделать, чтобы исправить эту проблему.

Есть ли способ перефокусироваться на всплывающем окне?

Пожалуйста, взгляните на код.

Thanks

+0

Это по той причине, что мы обычно избегаем использования реальных окон/всплывающих окон. Я вижу, что вы используете jQuery, поэтому вам стоит подумать только об использовании jQueryUI Dialog (http://jqueryui.com/demos/dialog/). – juandopazo

ответ

0

Почему бы не просто создать одно всплывающее окно; не скрывайте это; и обновить его местоположение, когда XHR вернется? т.е. что-то вроде:

var replyTo = null; 
var windWidth = 730; 
var windHeight = 550; 
var windTop = parseInt((screen.availHeight - windHeight)/3); 
var windLeft = parseInt((screen.availWidth - windWidth)/2); 

function windowPreOpen() { 
    replyTo = window.open('', 'Connect With Twitter', 'width=' + windWidth + ', height=' + windHeight + ', left=' + windLeft + ', top=' + windTop + ', scrollbars, resizable'); 
    window.focus(); 
}; 

function makeReplyTo() { 
    windowPreOpen(); 
    var user_id = "3"; 
    var data = $.ajax({ 
    type: "POST", 
    url: "uspolitics_pulse/functions.php", 
    data: { 
     type: 'checkOauth', 
     user_id: user_id 
    }, 
    success: function (data) { 
     if (data) { 
     replyTo.location = data; 
     } else { 
     replyTo.close(); 
     replyTo = $.prettyPhoto.open(''); 
     } 
    } 
    }); 
} 
Смежные вопросы