Avatar billede martin_moth Mester
05. maj 2003 - 19:43 Der er 25 kommentarer og
3 løsninger

resize window afhængig af sktiftstørrelse

På min hjemmeside har jeg et link, der bevirker, at et andet vindue popper op når det aktiveres:

<head>
<script>
  function NytVindue(url,navn) {
  var options="toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,copyhistory=no,width=350,height=480,top=100,left=100";
  msgwindow=window.open(url,navn,options);
  }
</script>
</head>
<body>
<a href="java script:NytVindue('NySide.asp','Nyside');">Kilk her</a>
</body>

Siden er stylet med css, og derfor betyder det intet for layoutet om brugeren fra sin browser vælger større/mindre skriftstørrelse. MEN er PC'en indstillet (via kontrolpanel -> Skærm -> Indstillinger -> Avanceret) til STORE skrifttyper, er der ikke plads i vinduet til al tekstes.

SOm det fremgår af min javascriptfunction, vil jeg gerne undgå scrollbars. Så - hvad er løsningen - jeg vil gerne have vinduets størrelse til at passe uanset indstillingerne på den PC der viser hjemmesiden. Kan man fra javascript læse om der er valgt store/små skrifttyper, og så lave en funktion der resizer derefter.

Eller hvad kan jeg gøre?
Størrelsen på vinduet er præcis som den skal være, hvis brugeren anvender små skriftstørrelser på
Avatar billede martin_moth Mester
05. maj 2003 - 19:45 #1
NB: Glem den allersidste linie - en copy-paste for meget :o)
Avatar billede boris Mester
05. maj 2003 - 19:57 #2
Så vidt jeg ved fortæller browseren ikke, om der er valgt store skrifttyper.
Du kan selv bestemme tekstens absolutte størrelse med font-size.
Avatar billede boris Mester
05. maj 2003 - 19:58 #3
Prøv dette:
Det ene sidste afsnit skifter størrelse, hvis der vælges stor skrift:
<div style="font-size:18px;">
Halløj med dig!
</div>
Halløj med dig også
Avatar billede martin_moth Mester
05. maj 2003 - 20:04 #4
Jeg har jo stylet al tekst på hjemmesiden med at linke til et CSS (ikke vist i min kode). Derfor er al tekst defineret med en absolut størrelse, fx. 11px.

Men tekstens størrelse ændrer sig, hvis brugeren har valgt at have sin PC indstillet med stor skrifttyper fremfor små skrifttyper. Og jeg kan ikke se hvad din kode skulle hjælpe på det problem?

Vinduet måler 350x480, og der er ikke plads til al teksten hvis brugeren har valgt store skrifttyper. Hvad gør den kloge tiger så?
Avatar billede boris Mester
05. maj 2003 - 21:04 #5
Når jeg indstiller computeren til store skrifttyper, vokser den skrift, som IKKE er sat med css som vist i mit eksempel.
Med små skrifttyper er andet eksempel lidt mindre, men med store skrifttyper fylder andet eksempel ca. 50 % mere end det med css.
Avatar billede boris Mester
05. maj 2003 - 21:11 #6
En anden ting er, at i dit eksempel  er vinduet ikke altid lige stort. Hvis bredden af vinduet er 350 i en 800 skærm, så skal den være ca. 450 i en 1024 skærm for at have samme bredde i forhold til skærmen.
Avatar billede terry Ekspert
05. maj 2003 - 21:40 #7
Avatar billede martin_moth Mester
06. maj 2003 - 09:14 #8
Ja ja - alt det med skærmopløsning ved jeg godt. Spørgsmålet er, hvad jeg gør for at løse problemet.

Jeg har i mellemtiden fået en ide:
Hvis jeg smider hele teksten ind i en tabel - kan jeg så smide en funktion ind, der resizer vinduet afhængig af tabellens størrelse? Tabellen vil jo skifte størrelse alt efter om der anvendes store/små skrifttyper:

<head>
<script>
  function ResizeWin () {
  strWidth = document.Mintabel.width
  strHeight = document.Mintabel.height
  window.resizeTo(strWidth,strHeight)
}
</script>
</head>
<body OnLoad="ResizeWin();">
<table name="Mintabel"><tr><td>
bla bla - indhold af siden
</td></tr></table>

Ovenstående er skrevet frit efter fantasi - vil det virke (den PC jeg sidder ved lige nu kan jeg ikke skifte skrifttype på, så jeg kan ikke teste - men kan man aflæse tabellens bredde på den måde jeg forsøger?
Avatar billede martin_moth Mester
06. maj 2003 - 09:16 #9
Boris: Det du prøver at fortælle mig er, at hvis jeg styler med css påvirkes tekststørrelsen ikke af om brugeren har store/små skrifttyper?
Hvis det er rigtigt forstået, lyder det meget mærkeligt, for jeg oplever det modsatte...
Avatar billede martin_moth Mester
06. maj 2003 - 09:43 #10
Hmm - mit lille forsøg med resize virker ikke.

For enkelthedens skyld vil jeg koge mit problem ned til følgende:

Et link på side1.html åbner side2.asp i et nyt vindue. Hvordan sikrer jeg mig, at side2.asp ikke har scrollbars, adresselinie osv og at det har en størrelse, så indholdet af side2.asp netop lige præcis kan være i vinduet det vises í - UANSET hvilke indstillinger brugeren måtte have på sin PC?

Jeg skriver selv begge sider...
Avatar billede boris Mester
06. maj 2003 - 09:53 #11
Jamen jeg synes også det er mærkeligt at jeg oplever det modsatte af det du oplever, og jeg er mægtig nysgerrig m.h.t. hvorfor.
Har du prøvet mit lille eksempel med div afsnit?
Du kan godt sætte tabelbredden med
document.getElementById("mintabel").style.width = "55"
(<table id="mintabel"......
og derefter kan du også læse bredden med javascript, men kun når du har sat den med javascript, og så er bredden jo fast!
Avatar billede boris Mester
06. maj 2003 - 09:58 #12
Du kan på side 1 måle skærmstørrelsen ved hjælp af javascript screen.width og videresende dette tal til side 2, som starter med at gemme det som en variabel og derefter sætter absolut skriftstørrelse v.h.a. CSS samt størrelse af vinduet på baggrund af denne variabel.
Jeg plejer at sige at alle tallene for en 1024 skærm ganges med 1,3 i forhold til en 800 skærm.
Avatar billede martin_moth Mester
06. maj 2003 - 10:01 #13
Ja - men problemet er jo, at min tekst fylder mere/mindre afhængigt om der er store/små skrifttyper på PC'en, uanset at jeg styler med CSS. Det problem kan jeg ikke få løst...
Avatar billede boris Mester
06. maj 2003 - 10:08 #14
Jeg ved ærligt talt ikke hvorfor. Men prøv at gøre som jeg har gjort med
<div style="font-size:14px;"> Et tekstafsnit</div>
<div style="font-size:14px;"> Et andet tekstafsnit</div>
Hvis det ikke hjælper, så prøv en anden font.
Avatar billede roenving Novice
06. maj 2003 - 10:09 #15
Ifølge min javascript-bibel, (IE5+) kan du aflæse style-properties:

<script>
  function ResizeWin () {
  strWidth = document.Mintabel.style.clipLeft-document.Mintabel.style.clipRight;
  strHeight = document.Mintabel.style.clipTop-document.Mintabel.style.clipBottom
  window.resizeTo(strWidth,strHeight)
}
</script>

hth
jes
Avatar billede martin_moth Mester
06. maj 2003 - 10:34 #16
Fejl: 'document.Mintabel.style' er null eller er ikke et objekt :o(

Måske er løsningen bare at smide scrollbars på, og så acceptere, at folk må scrolle lidt hvis de har valgt at bruge store skrifttyper. Lidt uelegang, meeeeen...
Avatar billede martin_moth Mester
06. maj 2003 - 10:35 #17
NB: Jeg vil da lige benytte lejligheden til at sige tak for hjælpen indtil nu, I skal nok få points...
Avatar billede roenving Novice
06. maj 2003 - 10:38 #18
Prøv med currentStyle i stedet for, biblen nævner, at der kan være problemer med properties, som ikke er explicit sat inden for scopen, så M$ har lavet et hack ...
Avatar billede roenving Novice
06. maj 2003 - 10:40 #19
Altså:

<script>
  function ResizeWin () {
  strWidth = document.Mintabel.currentStyle.clipLeft-document.Mintabel.currentStyle.clipRight;
  strHeight = document.Mintabel.currentStyle.clipTop-document.Mintabel.currentStyle.clipBottom
  window.resizeTo(strWidth,strHeight)
}
</script>
Avatar billede martin_moth Mester
06. maj 2003 - 10:43 #20
Ja, er med på hvad du mener, men:
Fejl: 'document.Mintabel.currentstyle' er null eller er ikke et objekt
Avatar billede roenving Novice
06. maj 2003 - 10:51 #21
Øv, det så ellers sådan ud når man ser teksten, men (IE5.5+) hvad så med runtimeStyle

-- og husk det der store bogstav inde midt i, javascript er case-sensitivt
Avatar billede jakoba Nybegynder
06. maj 2003 - 10:53 #22
i Netscape kan du aflæse størrelsen på det udlagte område i
document.width og document.height (først når siden er færdig med at loade forstås)

I IE kan du i denne situation aflæse størrelsen i document.body.scrollWidth og document.body.scrollHeight.

så du kan lave en onload funktion der resizer vinduet hvis de værdier er større end vinduets indre dimensioner.

men pas på IE's variable. du kan ikke stole på at de nogensinde bliver mindre end browserens indre størrelse, uanse hvor lille side-indholdet er.

mvh JakobA
Avatar billede martin_moth Mester
06. maj 2003 - 10:55 #23
Husker det store bogstag samt det ; du har glemt hvor du beregner højden ;o)
Og runtimeStyle giver samme fejl - tror ikke den vil acceptere en tabel som et objekt...
Avatar billede martin_moth Mester
06. maj 2003 - 10:59 #24
jakoba: Du er vist inde på noget der

Altså hente scrollwidth og scrollheight (der jo må angive størrelsen på "indholdet" af vinduet), og sætte vinduets størrelse efter disse. Nu er jeg ikke den helt store javascript koder, så lidt hjlæp kunne være lækkert :o)

Og hvordan sikrer jeg mig, at det virker i både IE og NS?
Avatar billede roenving Novice
06. maj 2003 - 11:01 #25
Ja -- og strengt taget også ; efter window.res...);

elementReference.runtimeStyle.property er biblens notation, så det forstår jeg ikke :~|
Avatar billede martin_moth Mester
07. maj 2003 - 19:48 #26
Problemet er løst på følgende måde:
http://www.eksperten.dk/spm/349792
Tak for indsatsen :o)
Avatar billede roenving Novice
07. maj 2003 - 19:52 #27
Jamen, takker for points ;~}

-- tænk engang imellem så er den alternative indgangsvinkel meget smartere !-)
Avatar billede martin_moth Mester
07. maj 2003 - 21:17 #28
Det var jo det jeg lærte da jeg læste:

Se problemet fra fugleperspektiv - måske er der helt andre veje at gå?
Ja, det var der så ;o)
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