Avatar billede jaloviking Nybegynder
27. marts 2003 - 00:53 Der er 7 kommentarer og
1 løsning

Vinduesbredde

Kan man forhindre at et nyt vindue der åbnes bliver bredere end 500 pixels?
Ja, sikkert, men hvordan?
Avatar billede viciodk Praktikant
27. marts 2003 - 01:29 #1
<html>
<head>
<script type="text/javascript">
function newWindow(mypage,myname,w,h,features) {
  if(screen.width) {
    if(w > 500)
      w = 500;
    var winl = (screen.width-w)/2;
    var wint = (screen.height-h)/2;
  }

  else {
    winl = 0;
    wint = 0;
  }

  if (winl < 0) winl = 0;
  if (wint < 0) wint = 0;

  var settings = 'height=' + h + ',';
  settings += 'width=' + w + ',';
  settings += 'top=' + wint + ',';
  settings += 'left=' + winl + ',';
  settings += features;
  win = window.open(mypage,myname,settings);
  win.window.focus();
}
</script>
</head>

<body>
<a href="#" onClick="newWindow('default.htm','popup',9999,400,'toolbar=yes,location=yes,directories=yes,status=yes,menubar=yes,scrollbars=yes,resizable=no'); return false;">klik</a>
</body>
</html>
Avatar billede jaloviking Nybegynder
27. marts 2003 - 09:32 #2
Hej viciodk
Jeg kan ikke få det til at fungere. Kunne du med XXXXXXX vise de steder jeg skal rette det til. Der må være noget jeg overser.
Avatar billede viciodk Praktikant
27. marts 2003 - 15:41 #3
Desværre fortæller du ikke hvor meget du i forvejen kender til HTML og JavaScript, så hvis min forklaring her ikke giver nogen mening for dig, så sig endelig til. Jeg går ud fra at du arbejder videre på en eksisterende side, så du burde kunne se koderne <html>, <head>, </head>, <body>, </body> og </html> på din side. Kopier derfor dette:

<script type="text/javascript">
function newWindow(mypage,myname,w,h,features) {
  if(screen.width) {
    if(w > 500)
      w = 500;
    var winl = (screen.width-w)/2;
    var wint = (screen.height-h)/2;
  }

  else {
    winl = 0;
    wint = 0;
  }

  if (winl < 0) winl = 0;
  if (wint < 0) wint = 0;

  var settings = 'height=' + h + ',';
  settings += 'width=' + w + ',';
  settings += 'top=' + wint + ',';
  settings += 'left=' + winl + ',';
  settings += features;
  win = window.open(mypage,myname,settings);
  win.window.focus();
}

.. ind på din side, så det står et sted mellem <head> og </head>. Dermed har du på din side indsat en helt generel funktion, hvis funktion blot er at åbne hvilken som helst hjemmeside i et nyt vindue (og den undersøger også om den angivne bredde er større end 500 pixels og hvis det er tilfældet sættes bredden til 500 pixels). Denne kode skal du altså ikke ændre på for at få det til at virke efter dine behov.

Kopier dernæst dette:
<a href="#" onClick="newWindow('default.htm','popup',9999,400,'toolbar=yes,location=yes,directories=yes,status=yes,menubar=yes,scrollbars=yes,resizable=no'); return false;">klik</a>

.. ind på din side, så det står mellem <body> og </body>. Det er et link som vi kender det fra HTML, men der benyttes JavaScript til at kalde funktionen inden for <head> og </head> med diverse argumenter som du selv kan angive for at få vinduet til at se ud som du ønsker.

Som du kan se kaldes funktionen newWindow(); fra body-sektionen via et normalt link. Siden default.htm åbnes med vinduesnavnet popup (dette har ikke noget at gøre med <title>Titel her</title>). Bredden er 9999 pixels (dette bliver så lavet om til 500 pixels fordi 9999 pixels > 500 pixels), højden er 400 pixels og i popupvinduet vises diverse værktøjslinjer, statusbar, scrollbars osv., men jeg har gjort så man ikke kan resize (justere) vinduets størrelse, for så ville man jo kunne gøre det større end 500 pixels.

Husk at hvis du indsætter flere vinduer:

<a href="#" onClick="newWindow('default.htm','popup',9999,400,'toolbar=yes,location=yes,directories=yes,status=yes,menubar=yes,scrollbars=yes,resizable=no'); return false;">klik</a>

<a href="#" onClick="newWindow('default.htm','popup2',9999,400,'toolbar=yes,location=yes,directories=yes,status=yes,menubar=yes,scrollbars=yes,resizable=no'); return false;">klik</a>

<a href="#" onClick="newWindow('default.htm','popup3',9999,400,'toolbar=yes,location=yes,directories=yes,status=yes,menubar=yes,scrollbars=yes,resizable=no'); return false;">klik</a>

<a href="#" onClick="newWindow('default.htm','popup4',9999,400,'toolbar=yes,location=yes,directories=yes,status=yes,menubar=yes,scrollbars=yes,resizable=no'); return false;">klik</a>

... skal du angive et nyt vinduesnavn til hvert vindue.
Avatar billede jaloviking Nybegynder
27. marts 2003 - 22:42 #4
Jeg har efterhånden lavet nogle hjemmesider og har også brugt JavaScript nogle gange, men ikke nogen jeg selv har "opfundet" kun tilpasset. Mit problem er på www.jalo-smykker.dk/smugkig hvor "farveprøver" gerne skulle åbne i et begrænset vindue da jeg har undladt menuen og siden sikkert skal bruges flere gange.
Jeg er i tvivl om hvor i koden jeg skal skrive "farver.html".
Er det i stedet for #, eller newWindow eller default.htm.
Jeg går ud fra at der kun skal ændres i den del der skal stå i BODY
Avatar billede viciodk Praktikant
27. marts 2003 - 23:26 #5
Ja, det er kun i BODY du skal ændre noget; lav default.htm om til farver.html

Jeg undrer mig bare over hvorfor du vil undersøge om bredden på det vindue u selv åbner er større end 500 pixels. Du kan jo angive den nøjagtive bredde på vinduet, så hvad er der galt med det. ER det fordi man ikke må resize billedet så det bliver større end 500 pixels eller hvad mener du?
Avatar billede jaloviking Nybegynder
28. marts 2003 - 01:10 #6
Da jeg skulle vise min søster som er ret ny på nettet hvad jeg havde lavet, åbnede farver i et nyt vindue der fyldte hele skærmen og det forvirrede hende meget. Hvis vinduet aldrig bliver større end 500 pixels vil selv de helt uerfarne ikke være i tvivl om, at den side de var på stadig er "inde bag ved".
Jeg har lavet nogle billeder i jpg der åbner i et vindue i en bestemt størrelse og det var bare noget i den stil jeg havde tænkt mig.
Avatar billede jaloviking Nybegynder
28. marts 2003 - 01:16 #7
Det jeg ville fra starten var at angive den nøjagtige bredde, men det fik jeg nok ikke formuleret ordentligt og dit svar sagde mig at det kunne man nok ikke som jeg havde forestillet mig.
Hvor og hvordan gør jeg det?
Kan man forhøje pointantallet midt i forløbet?
Avatar billede viciodk Praktikant
28. marts 2003 - 03:53 #8
Okay, i så fald vil det bedste nok være at skrive koden på en noget anden måde, så der ikke skal stå de samme ting flere gange:

<html>
<head>
<script type="text/JavaScript">
function newWindow(url, w, h) {
  var winl = (screen.availWidth-w)/2;
  var wint = (screen.availHeight-h)/2;
  var u = new Date().getTime();
  win=window.open(url,"popup"+u,"width="+w+",height="+h+",left="+winl+",top="+wint+",toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0,resizable=1,copyhistory=0");
  win.focus();
}
</script>
</head>

<body>
<a href="#" onclick="newWindow('farver.html', 500, 400);return false;">Link 1</a><br>
<a href="#" onclick="newWindow('farver2.html', 500, 400);return false;">Link 2</a><br>
<a href="#" onclick="newWindow('farver3.html', 500, 400);return false;">Link 3</a><br>
<a href="#" onclick="newWindow('farver4.html', 500, 400);return false;">Link 4</a><br>
</body>
</html>


Nu skal du altså ikke længere give hvert vindue et unikt navn; det klares automatisk. Der er også sørget for at der på et centralt sted (i HEAD) defineres hvilke værktøjslinjer der vises på popup-vinduerne, så du ikke skal angive dette hver eneste gang du skriver linket til at åbne en side i et nyt popup-vindue.

:)

"Kan man forhøje pointantallet midt i forløbet?" >> Ja, jeg mener det er øverst ude til venstre (under Funktioner) du kan gøre det.
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