Stworzyłem na stronie pionowe menu w elemencie nav o wysokości 266px w tym padding 5px z każdej strony. Menu to lista wypunktowana ul. Zauważyłem, iż na tabletach i smartfonach to menu nie zajmuje całego nav, więc utworzyłem skrypt, który oblicza wysokość ul i dostosowuje czcionkę, aby ul zajmował cały nav. Oto on
var wysokoscNawigacji, wysokoscMenu, szerokoscStrony, wysokoscStrony, rozdzielczoscStrony, czcionkaListyMenu, i, dopelnienieGorne, zmianaTla=zmianaTlaDuze=zmianaTlaWielkie=false, odstep=10, pierwszy=true, wysokoscMenuStare;
window.onload=aktualneDane;
function WysokoscMenu()
{
var nawigacja=document.getElementById("nawigacja"), listaMenu=document.getElementsByClassName("menuLink"), menu=document.getElementById("listaMenu");
szerokoscStrony=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth;
wysokoscStrony=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight;
wysokoscNawigacji=nawigacja.offsetHeight;
wysokoscNawigacji-=odstep;
wysokoscMenu=menu.offsetHeight;
if((document.getElementById("listaMenu").offsetHeight!=wysokoscMenuStare)||(pierwszy==true)) {
if(wysokoscMenu>wysokoscNawigacji) {
czcionkaListyMenu=listaMenu[0].style.fontSize.replace("pt", "");
while(wysokoscMenu>wysokoscNawigacji) {
czcionkaListyMenu--;
for(i=0;i<listaMenu.length;i++) {
listaMenu[i].style.fontSize=""+czcionkaListyMenu+"pt";
}
wysokoscMenu=menu.offsetHeight;
}
dopelnienieGorne=Math.floor((wysokoscNawigacji-wysokoscMenu)/2);
menu.style.paddingTop=""+dopelnienieGorne+"px";
}
else if(wysokoscMenu<wysokoscNawigacji) {
czcionkaListyMenu=listaMenu[0].style.fontSize.replace("pt", "");
while(wysokoscMenu<wysokoscNawigacji) {
czcionkaListyMenu++;
for(i=0;i<listaMenu.length;i++) {
listaMenu[i].style.fontSize=""+czcionkaListyMenu+"pt";
}
wysokoscMenu=menu.offsetHeight;
if(wysokoscMenu>wysokoscNawigacji) {
czcionkaListyMenu--;
for(i=0;i<listaMenu.length;i++) {
listaMenu[i].style.fontSize=""+czcionkaListyMenu+"pt";
}
break;
}
}
dopelnienieGorne=Math.floor((wysokoscNawigacji-wysokoscMenu)/2);
menu.style.paddingTop=""+dopelnienieGorne+"px";
}
else {
;
}
pierwszy=false;
wysokoscMenu=menu.offsetHeight;
wysokoscMenuStare=wysokoscMenu;
}
if(szerokoscStrony>wysokoscStrony) {
rozdzielczoscStrony=szerokoscStrony;
}
else {
rozdzielczoscStrony=wysokoscStrony;
}
if(rozdzielczoscStrony>3000&&zmianaTlaWielkie==false) {
document.body.style.backgroundImage='url("kolory/tlo2_wielkie.jpg")';
zmianaTlaWielkie=true;
zmianaTla=zmianaTlaDuze=false;
}
else if(rozdzielczoscStrony<3000&&rozdzielczoscStrony>1700&&zmianaTlaDuze==false) {
document.body.style.backgroundImage='url("kolory/tlo2_duze.jpg")';
zmianaTlaDuze=true;
zmianaTla=zmianaTlaWielkie=false
}
else if(rozdzielczoscStrony<1700&&rozdzielczoscStrony>1435&&zmianaTla==false) {
document.body.style.backgroundImage='url("kolory/tlo2.jpg")';
zmianaTla=true;
zmianaTlaDuze=zmianaTlaWielkie=false;
}
else {
;
}
}
function aktualneDane() {
window.setInterval(WysokoscMenu, 4500);
}
Skrypt też ma za zadanie zmienić tło strony w zależność od rozdzielczość. Co 4.5 sekundy wysokość ul i tło jest sprawdzane i w razie potrzeby zmieniane. U mnie we wszystkich przeglądarkach działa, ale u innych skrypt zawiesza tę stronę i pozostałe otwarte karty. Gdzie zrobiłem błąd?