Если я правильно вас понимаю, это звучит так:
- У вас есть небольшое приложение Flex в центре HTML-страницы
- При каком-либо событии вы хотите создать всплывающее окно HTML (новое всплывающее окно браузера).
- Это всплывающее окно должно быть в центре HTML-страницы.
Если это правильно, вам не нужно использовать localToGlobal или globalToLocal; Вы просто ищете границы области просмотра браузера. Вот метод, который я сейчас использую для размещения элементов по отношению к границам браузера (все это - JavaScript):
function getBrowserBounds()
{
var size = [0, 0];
if (typeof window.innerWidth != "undefined") {
size = [window.innerWidth, window.innerHeight];
}
else if (typeof document.documentElement != "undefined" && typeof document.documentElement.clientWidth != "undefined" && document.documentElement.clientWidth != 0) {
size = [document.documentElement.clientWidth, document.documentElement.clientHeight];
}
else {
size = [document.getElementsByTagName("body")[0].clientWidth, document.getElementsByTagName("body")[0].clientHeight];
}
var bounds = null;
if (navigator.userAgent.indexOf("MSIE") != -1) // Internet Explorer
bounds = [window.screenLeft, window.screenTop, size[0], size[1]];
else
bounds = [window.screenX, window.screenY, size[0], size[1]];
var width = bounds[0] + (bounds[2]/2);
var height = bounds[1] + (bounds[3]/2);
return bounds;
}
Возвращает границы области просмотра браузера. Оттуда вы можете создать всплывающее окно с центром в браузере, где бы браузер не выходил за пределы экрана ноутбука / рабочего стола, используя это:
function centerPopup(windowHeight, windowWidth, windowName, windowUri)
{
var bounds = getBrowserBounds();
var centerWidth = bounds[0] + ((bounds[2] - windowWidth) / 2);
var centerHeight = bounds[1] + ((bounds[3] - windowHeight) / 2);
newWindow = window.open(windowUri, windowName, 'resizable=0,width=' + windowWidth +
',height=' + windowHeight +
',left=' + centerWidth +
',top=' + centerHeight);
newWindow.focus();
return newWindow.name;
}
Дайте мне знать, если это работает.
Лучший,
Lance