artsage > 14-07-2006 19:40:15 |
скрипт.. var navShown=false; var navFade=null; var NNN=(document.layers)?true:false; var NIE=(document.all)?true:false; var nameShown = ""; function hideNav() { if (navFade) { clearTimeout(navFade); navFade=null } if(navShown) { if (NNN){ document.layers["kmnav"+nameShown].visibility="hide"; }else if (NIE){ document.getElementById("kmnav"+nameShown).style.visibility="hidden"; } } navShown=false; nameShown=""; return true; } function showNav(name,X) { if (navFade) { clearTimeout(navFade); navFade=null } if(nameShown!=name) { X+=Math.round(((NNN)?window.innerWidth-16:((NIE)?document.body.clientWidth:0)))-800; if (navShown) hideNav(); if (NNN) { document.layers["kmnav"+name].top=18; document.layers["kmnav"+name].left=X-15; document.layers["kmnav"+name].visibility="show"; }else if (NIE){ document.getElementById("kmnav"+name).style.top=18; document.getElementById("kmnav"+name).style.left=X-15; document.getElementById("kmnav"+name).style.visibility="visible"; } nameShown = name; } if(NNN) navFade=setTimeout("hideNav();",10000); navShown=true; return true; } function closeNav() { navFade=setTimeout("hideNav();",100); //hideNav(); return true; } function mouse_up (e) { closeNav(); return true; } if (NNN) { window.onmouseup=mouse_up; window.captureEvents(Event.MOUSEUP); } жуть эти слои...ослик с оперой всё нормал...мозилка отказывается.... http://sage.jino-net.ru/052.shtml |
rurik > 15-07-2006 12:00:24 |
Никто не отвечает. Ну ладно, я отвечу тогда  Это точно Только вот зачем их использовать? Метод layers использовался последний раз по-моему в Netscape 4, т.е. около 10 лет назад. Вам точно нужна поддержка Netscape?  Все современные браузеры (даже IE ) подеерживают метод getElementById. Так не лучше ли использовать его? |
artsage > 15-07-2006 13:51:21 |
Спасибо конечно за ответ, но может я туплю немного... старый код . . document.layers["kmnav"+nameShown].visibility="hide"; заменен...(в том числе и скобки) document.getElementById("kmnav"+nameShown).visibility="hide"; и так везде где встречаются layers.... не работает...подскажи где я ошибся... |
rurik > 15-07-2006 14:04:19 |
Если метод getElementById поддерживается, то должен использоваться document.getElementById("kmnav"+nameShown).style.visibility="hidden"; В противном случае (document.all) document.all["kmnav"+nameShown].style.visibility = "hidden" (вроде бы ) Поддержку NN можно убрать (я бы убрал) |
artsage > 15-07-2006 14:19:25 |
ААА...Всё получилось..сенкс rurik... манипуляции var navShown=false; var navFade=null; var NNN=(document.layers)?true:false; // layers заменить не уд. ошибка... var NIE=(document.getElementById)?true:false; //вместо all подставлен .getElementById var nameShown = ""; ... везде прописан матод .getElementById document.getElementById["kmnav"+name].top=18;..... получ. код.... var navShown=false; var navFade=null; var NNN=(document.layers)?true:false; var NIE=(document.getElementById)?true:false; var nameShown = ""; function hideNav() { if (navFade) { clearTimeout(navFade); navFade=null } if(navShown) { if (NNN){ document.getElementById["kmnav"+nameShown].visibility="hide"; }else if (NIE){ document.getElementById("kmnav"+nameShown).style.visibility="hidden"; } } navShown=false; nameShown=""; return true; } function showNav(name,X) { if (navFade) { clearTimeout(navFade); navFade=null } if(nameShown!=name) { X+=Math.round(((NNN)?window.innerWidth-16:((NIE)?document.body.clientWidth:0)))-800; if (navShown) hideNav(); if (NNN) { document.getElementById["kmnav"+name].top=18; document.getElementById["kmnav"+name].left=X-15; document.getElementById["kmnav"+name].visibility="show"; }else if (NIE){ document.getElementById("kmnav"+name).style.top=18; document.getElementById("kmnav"+name).style.left=X-15; document.getElementById("kmnav"+name).style.visibility="visible"; } nameShown = name; } if(NNN) navFade=setTimeout("hideNav();",10000); navShown=true; return true; } function closeNav() { navFade=setTimeout("hideNav();",100); //hideNav(); return true; } function mouse_up (e) { closeNav(); return true; } if (NNN) { window.onmouseup=mouse_up; window.captureEvents(Event.MOUSEUP); } |
Al_H > 15-07-2006 15:07:49 |
Я в восторге. ... Это здорово! Наверное, имелось в виду - тоже не очень удачно. Предлагаю вариант: и дальше вызывать объекты уже через gElId('id_элемента'); Вообще легче скрипт переписать, чем отлаживать. (Прошу прощения за такие слова, но это одна из самых популярных фраз на форуме. К сожалению, определение переменных isNN и isIE и затем оперирование ими - один из приемов веб-дизайна образца 2000 года, в наше время должно быть переключение не просто по функциональности, но и с учетом document.getElementById(), и лучше менять классы у элементов, а не конкретные свойства стилей.) |