Flex - Как получить абсолютные координаты X и Y, включая смещение HTML? - PullRequest
0 голосов
/ 18 февраля 2010

Я вызываю функцию JS через ExternalInterface, используя Flex, который требует абсолютных координат X и Y для создания всплывающего меню.Приложение Flex отображается в центре страницы HTML, поэтому необходимо учитывать смещение HTML X и Y.

Я пробовал использовать функции LocalToGlobal и ContentToGlobal, но они просто дают мне X иКоординаты Y относительно приложения Flex не учитывают смещение HTML X и Y, когда приложение Flex находится в центре страницы, или различные разрешения экрана.

Это лучший подход для извлечения HTML Xи Y смещение с помощью JavaScript?Можно ли использовать функцию Flex, которая обеспечивает абсолютные координаты X и Y на основе HTML-страницы?

Спасибо!

1 Ответ

1 голос
/ 18 февраля 2010

Если я правильно вас понимаю, это звучит так:

  • У вас есть небольшое приложение 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...