Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Абсолютное позиционирование элемента на экране
 
 автор: Denis_Gorby   (11.09.2007 в 22:30)   письмо автору
 
 

Здравствуйте.

Стоит задача по показу модального диалога в конкретной точке экрана (под только что нажатой кнопкой).

Для определения позиции нажатой кнопки использую следующие функции:

function GetModalNodeLeft(topParent, node)
{
if (node == null) return 0;
if (node == topParent) return parseInt(node.offsetLeft);

var selfLeft = 0;

selfLeft = parseInt(node.offsetLeft);

return isNaN(selfLeft) ? 0 : selfLeft + GetModalNodeLeft(topParent, node.offsetParent);
}

function GetModalNodeTop(topParent, node)
{
if (node == null) return 0;
if (node == topParent) return parseInt(node.offsetTop);

var selfTop = parseInt(node.offsetTop);

return isNaN(selfTop) ? 0 : selfTop + GetModalNodeTop(topParent, node.offsetParent);
}


Эти функции работают по разному в разных браузерах и при разных стилях верски (табличная или дивная).

Собственно, вопрос: не поделится ли кто-нибудь добрый такими же функциями, но корректно работающими во всех браузерах?

   
 
 автор: Madman   (11.09.2007 в 23:40)   письмо автору
 
   для: Denis_Gorby   (11.09.2007 в 22:30)
 

совсем запутался в вашем скрипте! Сделайте проще:

function get_coordinates(obj) {
    var offsetTop=obj.offsetTop, offsetLeft=obj.offsetLeft, parent=obj.parentNode;
    while (parent!=window.document) {
        offsetTop += parent.offsetTop;
        offsetLeft += parent.offsetLeft;
        parent = parent.parentNode;
    }
}

   
 
 автор: Denis_Gorby   (12.09.2007 в 11:26)   письмо автору
 
   для: Madman   (11.09.2007 в 23:40)
 

>совсем запутался в вашем скрипте! Сделайте проще:

Извините, но ваш более простой скрипт неправилен вообще. Нельзя в этом алгоритме использовать parentNode. Необходим offsetParent. И window.document не всегда тот элемент, на котором нужно останавливать цикл.

Впрочем, мой вопрос был к тем, кто уже имеет реально работающий и проверенный алгоритм, учитывающий глюки Оперы, block и inline элементы и т.д. и т.п.

   
 
 автор: AlexSol   (12.09.2007 в 11:43)   письмо автору
 
   для: Denis_Gorby   (12.09.2007 в 11:26)
 

посмотрите скрипт всплывающая подсказка

   
 
 автор: Denis_Gorby   (12.09.2007 в 12:23)   письмо автору
 
   для: AlexSol   (12.09.2007 в 11:43)
 

>посмотрите скрипт всплывающая подсказка

Спасибо

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования