Палка о двух концах

Tn

Guest
Палка о двух концах

Вопрос не по PHP, а по JavaScript, но пишу сюда, потому что форум ваш мне уж больно нравится :)

Может кто сталкивался с такой проблемой.

Делаю стандартное динамическое меню, когда при наводе на пункт главного меню, справа страновится видимым ранее не видимый лаер с пунктами субменю.
В NN4 бэкграунд в субменю отображается только если лаеры-субменю загружены в конце страницы, но при этом возникает троубл:
IE5.5 в свою очередь выкидывает ошибку javascript error: Object Required. Kак я смог определить проблему, (возмо не правильно):
1) ошибка не появляется, когда нажимаю на ссылку в субменю (т.е. лаеры успели загрузится)
2) ошибка появляется при нажатии на ссылку в главном меню, когда идет процесс загрузки новой страници, IE5, видимо, определяет что курсор мышки весит на пункте главного меню и вызывает onmouseover - а это загрузка субменю. Но т.к. лаеры субменю еще не загружены от сюдова ошибка Object Required в скриптах обрабатывающих эти лаеры.
Что делать ? :( Возможно есть решение загружать лаеры в начале страницы, но тогда как помочь NN на них не обламываться ?

Я могу скинуть сюда код, только упрощу его до минимума (если надо).
 

Андрей М.

Guest
писать скрипты под НН4, это в наше время занятие сродни некрофилии :-\ Мозиллой к слову пользуется в 2.5 раза больше людей..

а вообще запихни скрипт в функцию и в <body onload="myfun()">
а без кода действительно трудно:)
 

Ямерт

The Old One
Tn, я над этой дилеммой долго ломал голову год назад, и в конце концов сделал так: скрипт определяет, какой у клиента браузер, и если это NN<=4.x, выводит лаеры в самом низу, иначе - вверху.

P.S. Кстати, заметь глюк NN 4.x, когда применяешь position:absolute - все элементы <input> после элемента с таким стилем пропадают :)

ошибка появляется при нажатии на ссылку в главном меню, когда идет процесс загрузки новой страници
А ты можешь сделать так:

в начале страницы:
<script...>
var menu_loaded = 0;
</script>

Затем <body onLoad="menu_loaded=1">

Ну и в функциях, работающих с меню -
function myMenuOperation(...)
{
if (!menu_loaded)
return false;
}
 
Сверху