Avatar billede netro Nybegynder
29. december 2003 - 01:18 Der 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);
}

========

<body onLoad="resizeandmove(150,300);">
Avatar billede roenving Novice
29. december 2003 - 01:34 #1
Vel ca 7-8 pixels til venstre ?-)

-15 i koden !-)
Avatar billede netro Nybegynder
29. december 2003 - 01:41 #2
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.
Avatar billede netro Nybegynder
29. december 2003 - 01:41 #3
De 15 pixels er jo til scrollbar'en.
Avatar billede roenving Novice
29. december 2003 - 01:51 #4
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 !-)
Avatar billede netro Nybegynder
29. december 2003 - 02:05 #5
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...?
Avatar billede roenving Novice
29. december 2003 - 02:08 #6
Hov, havde ikke lige set, at du brugte en ikke-eksisterende funktion:

  window.moveTo(leftpos,toppos);
Avatar billede netro Nybegynder
29. december 2003 - 02:14 #7
Du mener det lille "m" eller hvad? I så fald ændrer det ikke på noget...
Avatar billede roenving Novice
29. december 2003 - 02:20 #8
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);
}
Avatar billede netro Nybegynder
29. december 2003 - 02:25 #9
Det fungerer præcis ligeså godt/dårligt, som den oprindelige funktion. Det ser mere fikst ud, men vinduet bliver stadig ikke flyttet...?
Avatar billede roenving Novice
29. december 2003 - 02:27 #10
Øv, jeg glemte jo det lille m ...

-- nåede du at se det ?-)
Avatar billede netro Nybegynder
29. december 2003 - 02:29 #11
Ja, men det gør hverken fra eller til...
Avatar billede roenving Novice
29. december 2003 - 02:33 #12
De store P'er:

  window.MoveTo(leftPos,topPos);
Avatar billede roenving Novice
29. december 2003 - 02:34 #13
window.moveTo(leftPos,topPos);
Avatar billede netro Nybegynder
29. december 2003 - 02:39 #14
Godt set - sikke noget rod. Det virker nu, så du smider bare et svar :)
Avatar billede roenving Novice
29. december 2003 - 02:42 #15
Velbekomme '-)

-- og det er ret væsentligt i javascript-programmering, at man er opmærksom på den stærke følsomhed overfor små og store bogstaver !-)
Avatar billede netro Nybegynder
29. december 2003 - 02:46 #16
Ja, jeg ved også godt, at Javascript er case-sensitive, men jeg havde slet ikke set det ;)
Avatar billede roenving Novice
29. december 2003 - 02:47 #17
-- og tak for points ;~}
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester