Страницы: 1
скрипт..
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
Отредактировано artsage (14-07-2006 21:10:17)
Совершить ошибку и не исправить ее - это и называется совершить ошибку.
Отсутствует
Никто не отвечает. Ну ладно, я отвечу тогда
жуть эти слои...
Это точно Только вот зачем их использовать? Метод layers использовался последний раз по-моему в Netscape 4, т.е. около 10 лет назад. Вам точно нужна поддержка Netscape?
Все современные браузеры (даже IE ) подеерживают метод getElementById. Так не лучше ли использовать его?
Отредактировано rurik (15-07-2006 12:01:08)
Отсутствует
Спасибо конечно за ответ, но может я туплю немного...
старый код . .
document.layers["kmnav"+nameShown].visibility="hide";
заменен...(в том числе и скобки)
document.getElementById("kmnav"+nameShown).visibility="hide";
и так везде где встречаются layers....
не работает...подскажи где я ошибся...
Совершить ошибку и не исправить ее - это и называется совершить ошибку.
Отсутствует
Если метод getElementById поддерживается, то должен использоваться
document.getElementById("kmnav"+nameShown).style.visibility="hidden";
В противном случае (document.all)
document.all["kmnav"+nameShown].style.visibility = "hidden" (вроде бы )
Поддержку NN можно убрать (я бы убрал)
Отредактировано rurik (15-07-2006 14:24:21)
Отсутствует
ААА...Всё получилось..сенкс 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);
}
Совершить ошибку и не исправить ее - это и называется совершить ошибку.
Отсутствует
Я в восторге.
...
Это здорово!
Наверное, имелось в виду
- тоже не очень удачно.
Предлагаю вариант:
function gElId(elId) {return ((document.getElementById)?document.getElementById(elId):((document.all)?document.all[elId]:null));}
и дальше вызывать объекты уже через gElId('id_элемента');
Вообще легче скрипт переписать, чем отлаживать. (Прошу прощения за такие слова, но это одна из самых популярных фраз на форуме. К сожалению, определение переменных isNN и isIE и затем оперирование ими - один из приемов веб-дизайна образца 2000 года, в наше время должно быть переключение не просто по функциональности, но и с учетом document.getElementById(), и лучше менять классы у элементов, а не конкретные свойства стилей.)
Отсутствует
Страницы: 1