0

I was using a JQuery dialog like this: $(thisDialog).dialog(); until I learned that it doesn't like IE9 Quirks mode and doctype strict is not an option because of legacy code, how can I center the popup from this example?

http://jsfiddle.net/46jYC/3/

patrick
  • 16,091
  • 29
  • 100
  • 164

2 Answers2

1

A jQuery solution, considering the modal-dialog is position absolute/relative/fixed:

var windowHeight = $(window).height();
var windowWidth = $(window).width();
var boxHeight = $('.modal-dialog').height();
var boxWidth = $('.modal-dialog').width();
$('.modal-dialog').css({'left' : ((windowWidth - boxWidth)/2), 'top' : ((windowHeight - boxHeight)/2)}); //change selector to whatever your selector is :)

A jQuery solution, considering the modal-dialog is not position absolute/relative/fixed:

css:

margin-left: auto;
margin-right: auto;

jquery:

var windowHeight = $(window).height();
var boxHeight = $('.modal-dialog').height();
$('.modal-dialog').css({'margin-top' : ((windowHeight - boxHeight )/2)});  //change selector to whatever your selector is :)
faerin
  • 1,915
  • 17
  • 31
  • i would suggest cache the DOM elements to enhance its performance.. example :-$('.modal-dialog') we are using this in code multiple time so we should cache it like var modalDialog=$('.modal-dialog'); now we can use modalDialog instead of $('.modal-dialog') so it will be faster (its a good practice ) thanks – Devendra Soni Jul 22 '14 at 17:05
  • the $(window).height() was returning zero, but if i manually give it the left and top css values it works good. Thanks! – patrick Jul 22 '14 at 17:08
  • @patricik, the `$(window).height()` should not return 0. Try to put the code snippet within `$(document).ready(function(){//code here});` and you will have the the dialog's position calculated dynamically for all kinds of window sizes. – faerin Jul 22 '14 at 17:44
  • @entiendoNull I'm in quirks mode so I needed to use this trick to get the height http://stackoverflow.com/a/11744120/73804 – patrick Jul 22 '14 at 18:26
0

You should write something like this:

function abrirPopup(url,w,h) {
    var newW = w + 100;
    var newH = h + 100;
    var left = (screen.width - newW) / 2;
    var top = (screen.height - newH) / 2;
    var newwindow = window.open(url, 'name', 'width=' + newW +
            ',height=' + newH + ',left=' + left + ',top=' + top);
    newwindow.resizeTo(newW, newH);

    //posiciona o popup no centro da tela
    //(position the popup in the center of the canvas)
    newwindow.moveTo(left, top);
    newwindow.focus();
    return false;
}

HTML:

<a href="#" onclick="return abrirPopup('http://www.google.com.br', 500, 400)">Google</a>
Robert Gowland
  • 7,677
  • 6
  • 40
  • 58
ivanfromer
  • 329
  • 1
  • 5