Firefox: работа с element.style.left

Drakon

Новичок
Firefox: работа с element.style.left

Такая проблема: делаю менюшку, у которой выскакивают подменюшки на DIV-тегах. Ну, короче стандартный вариант.
Так вот: вычисляю, где должна выскачить подменюшка:

Код:
function findPos(obj) 
{
	var curleft = curtop = 0;
	
	if (obj.offsetParent) 
	{
		curleft = obj.offsetLeft;
		curtop = obj.offsetTop;
		while (obj = obj.offsetParent) 
		{
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
		}
	}

	return [curleft, curtop];
}
Тоже стандартный скрипт.. Везде в инете валяется.

А теперь проблема: перемещаю менюшку в нужное место:

Код:
var pos = findPos(parent_obj);
obj.style.left = pos[0] + 'px';
Здесь obj - подменюшка, parent_obj - кнопка, на которую навелю.

Так вот: в IE и Opera всё пашет изумительно.
В Firefox отступ отсчитывается от середины экрана! Потратил хз скока времени.. Чего тока не пробовал - не помогает :(
Например на www.ag.ru используется почти тот же самый код, но там в Firefox всё гуд... Ничего не понимаю :(

Для наглядности вот стиль менюшки:
Код:
DIV.SubMenu
{
	position: absolute;
	visibility: hidden;
	z-index: 10;
	top: 0px;
	left: 0px;
	/* width: 150px; */
	filter: alpha(opacity=100);
	/* display: none; */
}

TABLE.TopMenu TD 
{ 
	background-color: #E3E7E8; 
	cursor: hand; 
	font-size: 11px; 
	letter-spacing: 1px; 
	filter: alpha(opacity=80);
	border: 1px solid #CC0000;
}

TABLE.SubMenu TD
{
	background-color: #E3E7E8; 
	cursor: hand; 
	font-size: 11px; 
	letter-spacing: 1px; 
	filter: alpha(opacity=65);
	border: 1px solid #CC0000;
}
Вот она сама:
Код:
<table cellpadding="2" cellspacing="1" border="0" align="center" class="TopMenu">
<tr>
	<td id="menu_1" onmouseover="m_over(this);" 
		onmouseout="m_out(this);" onclick="m_click(this);">Главная</td>
	
	<td id="menu_2" onmouseover="m_over(this);" 
		onmouseout="m_out(this);" onclick="m_click(this);">Ссылки</td>
	
	<td id="menu_3" onmouseover="m_over(this);" 
		onmouseout="m_out(this);" onclick="m_click(this);">Новости</td>
	
	<td id="menu_4" onmouseover="m_over(this);" 
		onmouseout="m_out(this);" onclick="m_click(this);">Статьи</td>
	
	<td id="menu_5" onmouseover="m_over(this);" 
		onmouseout="m_out(this);" onclick="m_click(this);">Файлы</td>
	
	<td id="menu_6" onmouseover="m_over(this);" 
		onmouseout="m_out(this);" onclick="m_click(this);">Правила сервера</td>
	
	<td id="menu_7" onmouseover="m_over(this);" 
		onmouseout="m_out(this);" onclick="m_click(this);">О сервере</td>
		
	<td id="menu_8" onmouseover="m_over(this);" 
		onmouseout="m_out(this);" onclick="m_click(this);">Сервисы</td>
	
	<td id="menu_9" onmouseover="m_over(this);" 
		onmouseout="m_out(this);" onclick="m_click(this);">Форум</td>
		
	<td id="menu_10" onmouseover="m_over(this);" 
		onmouseout="m_out(this);" onclick="m_click(this);">Статистика CS</td>
</tr>
</table>

<div align="left" class="SubMenu" id="menu_5_sub">
<table cellpadding="2" cellspacing="1"  border="0" align="center" class="SubMenu">

	<tr><td id="menu_11" onmouseover="m_over(this);" 
		onmouseout="m_out(this);" onclick="m_click(this);">Дистрибутив CS 1.6</td></tr>
	
	<tr><td id="menu_12" onmouseover="m_over(this);" 
		onmouseout="m_out(this);" onclick="m_click(this);">Демки сервера</td></tr>
	
	<tr><td id="menu_13" onmouseover="m_over(this);" 
		onmouseout="m_out(this);" onclick="m_click(this);">Архив карт</td></tr>
	
	<tr><td id="menu_14" onmouseover="m_over(this);" 
		onmouseout="m_out(this);" onclick="m_click(this);">Архив видео</td></tr>
	
</table>
</div>
Вот тот самый скрипт с www.ag.ru:
Код:
function popup(ev, pa, ch) {
	try {visible.style.visibility = 'hidden';visible.style.display = 'none';}
	catch(f) {}
	try {
		clearTimeout(ti);
		queued.style.visibilty = 'hidden';queued.style.display = 'none';
	}
	catch(f) {}
	ch = document.getElementById(ch);
	var rr = getDim(pa);
	if (isMos != 1) {
		ch.style.pixelLeft = rr.x - 1;
		ch.style.pixelTop = rr.y + pa.offsetHeight;
	}
	else {
		ch.style.left = rr.x - 1 + 'px';
		ch.style.top = (rr.y + pa.offsetHeight) + 'px';
	}
	ch.style.visibility = 'visible';ch.style.display = 'block';
	visible = ch;
}
function getDim(el){
for (var lx=0,ly=0;el!=null;
lx+=el.offsetLeft,ly+=el.offsetTop,el=el.offsetParent);
return {x:lx,y:ly}
}
-~{}~ 09.11.06 20:14:

Вот пример: http://www.dubki.ru/~drakon/js/DUBKI_CS1.6_SERVER.htm (UTF-8)

-~{}~ 09.11.06 22:20:

Все разрешилось.
Ответ см. здесь: http://forum.vingrad.ru/topic-120353
 
Сверху