29. december 2003 - 01:18Der er
16 kommentarer og 1 løsning
Centrere et åbent vindue
Jeg anvender følgende funktion til at resize'e og centrere et popup-vindue, der allerede er åbnet. Det går fint med at ændre størrelsen på vinduet, men dets position bliver altid forskudt lidt i forhold til centrum af skærmen. Hvorfor?
function resizeandmove(h,w) { window.resizeTo(w,h); var leftPos = null, topPos = null; if (top.screen){ if (screen.width){ leftPos = Math.round((screen.availWidth-w-15)/2); topPos = Math.round((screen.availHeight-h)/2); } else { leftPos = 50 topPos = 50 } } window.MoveTo(leftpos,toppos); }
Nej, nærmere 50-100 pixels for højt. Desuden bliver vinduet ikke placeret samme sted hver gang, det resize'es. Positionen afhænger åbenbart af dets originale størrelse, og det forstår jeg ikke.
availHeight og -Width giver den plads, som er til rådighed, når taskbar og lignende windows-ting samt faste ting som f.eks. ICQ-paneler er trukket fra, så den centrerer ikke på skærmen, men indenfor det vindue du aktuelt har åbent !-)
Ja, så er det måske bedre at bruge screen.width/height i stedet. Men det løser ikke problemet. Det ser faktisk ud til, at vinduet slet ikke flyttes, men kun resize'es...?
Nu forstår jeg heller ikke at koden ser ud som den gør, for den tager højde for en bug, som Internet Explorer havde i 3 måneder i 1995, man kunne nøjes med:
function resizeandmove(h,w) { window.resizeTo(w,h); var leftPos = 0, topPos = 0; leftPos = Math.round((screen.availWidth-w-15)/2); topPos = Math.round((screen.availHeight-h)/2); window.MoveTo(leftpos,toppos); }
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.