Avatar billede munck Nybegynder
16. november 2001 - 15:53 Der er 21 kommentarer og
1 løsning

800x600 --> 1024x768 etc...

Følgende script har jeg brugt til redirect alt efter browserstørrelse:

<script language=\"JavaScript\">
if (window.screen.width >= 1280) {
    URL = \"1280.asp\";
    window.location = URL;
} else
if (window.screen.width >= 1152) {
    URL = \"1152.asp\";
    window.location = URL;
} else
if (window.screen.width >= 1024) {
    URL = \"1024.asp\";
    window.location = URL;
} else
if (window.screen.width >= 800) {
    URL = \"800.asp\";
    window.location = URL;
} else
if (window.screen.width >= 640) {
    URL = \"640.asp\";
    window.location = URL;
} else {
    URL = \"800.asp\";
    window.location = URL;
}
</script>

Nuværende løsning er, at siden automatisk tilpasses browserstørrelsen.
Derfor ville jeg gerne have, at scriptet i stedet lavede tilføjelse til filnavnet på anvendte billedfiler, så fremstår lige store uanset browserstørrelsen.

f.eks. 1.jpg til 1_800.jpg, hvis browserstørrelsen er 800x600, og 1_1024, hvis 1024x768 etc.
Jeg sidder med et andet script, som måske kunne bruges til at kombinere med det første.
<script language=\"JavaScript\">
<!--       
        function swapin(myid)
        {
        document.all[myid].src = \"images/\"+ myid +\"_on.jpg\"

        }
        function swapout(myid)
        {
        document.all[myid].src = \"images/\" + myid + \".jpg\"
        }
//-->
</script>
afvikling:
<a href=\"side.asp\"><img border=\"0\" src=\"1.jpg\" id=\"1\" onmouseout=\"java script:swapout(this.id)\" onmouseover=\"java script:swapin(this.id)\"></a><br>

Det er ikke sådan, at jeg skal lave billedskift ved mouseover, men der skal skabes forudsætning for en aspkode
<% if \"forudsætning1280\" then %>
<img src=1_1280.jpg>
<% else %>
<img src=1_800.jpg>
<% end if %>
Jeg er ikke nogen ørn til javascript, og kunne godt trænge til lidt hjælp.

Mvh.
Munck
Avatar billede zyberwizard Nybegynder
16. november 2001 - 15:55 #1
med på en lytter...
Avatar billede jakoba Nybegynder
16. november 2001 - 16:06 #2
Det du tester på  window.screen.width  er størelsen på hele brugerens skærm, hvad med istedet at teste på hvor stort et browservindue han giver dig at vise siden i?

if ( document.all && ! navigator.userAgent.indexOf(\'Opera\')>=0 )
  var winBred = document.body.clientWidth;
else
  var winBred = window.innerWidth;

if (window.screen.width >= 1280) { URL = \"1280\";
} else
if (window.screen.width >= 1152) { URL = \"1152\";
} else
if (window.screen.width >= 1024) { URL = \"1024\";
} else
if (window.screen.width >= 800) {  URL = \"800\";
} else
if (window.screen.width >= 640) {  URL = \"640\";
} else {    URL = \"800\";
}
self.location.href = \"filnavn.asp?bredde=\"+URL;

i din asp få du så en variabel der hedder bredde med størrelsen i
( tror jeg ret sikkert. Det virker ihvertfald på den måde i PHP :-))

mvh JakobA
Avatar billede jakoba Nybegynder
16. november 2001 - 16:08 #3
Ups  window.screen.width  skal jo udskiftes med winbred i alle if sætningerne:
if (winBred >= 1280) { URL = \"1280\";
} else
if (winBred >= 1152) { URL = \"1152\";
...
Avatar billede munck Nybegynder
16. november 2001 - 18:52 #4
/jacoba
Du mener altså, at ovennævnte giver mig værdien \"bredde\", som jeg så kan bruge i min asp-kode??
Jeg er ikke interesseret i, hvilken størrelse vindue brugeren anvender - kun størrelsen på browseren:/  Hvordan mener du så, koden skal se ud? ellers er jeg helt med...

:/Det er netop derfor jeg skal bruge forskellige billedstørrelser!

Mvh.
Avatar billede Slettet bruger
16. november 2001 - 18:59 #5
Størrelsen af browseren og størrelsen af vinduet er i mine ører præcis det samme. Men du mener vist brugerens opløsning, har jeg ret?
Så kan du nemlig bare gøre således:

if (window.screen.width >= 1280) URL = \"1280\";
else if (window.screen.width >= 1152) URL = \"1152\";
else if (window.screen.width >= 1024) URL = \"1024\";
else if (window.screen.width >= 800) URL = \"800\";
else if (window.screen.width >= 640) URL = \"640\";
else URL = \"800\";
self.location.href = \"filnavn.asp?bredde=\" + URL;
Avatar billede jakoba Nybegynder
16. november 2001 - 19:07 #6
      window.screen.width   
giver hele skærmens bredde fra kant til kant, det er som regel kønne runde talt som dem der testes opimod i din test: 640, 800, 1024, 1280, ...

Hvis brugeren har sin browser maximeret er hans vindues størrelse det samme som skærmstørrelsen. Men ved opløsninger over 800 vælger mange at køre med en mindre browservindue. det er så Winduets bredde, eller browserens bredde, den kan du få med:
if ( document.all && navigator.userAgent.indexOf(\'Opera\')==-1 )
  var winBred = document.body.clientWidth;
else
  var winBred = window.innerWidth;

Jeg synes det er bedst at måle på vinduets bredde :-))

mvh JakobA
Avatar billede munck Nybegynder
16. november 2001 - 20:49 #7
/jakoba
OK
Jeg tester lige
Avatar billede munck Nybegynder
16. november 2001 - 21:23 #8
/jakoba
Det funker ikke
genererer scriptfejl - object mangler
Mvh.
Avatar billede munck Nybegynder
16. november 2001 - 21:25 #9
/phoenixv
Siden står bare og opdaterer sig selv i én uendelighed - den hedder dog filname.asp?1280
Mvh.
Avatar billede jakoba Nybegynder
16. november 2001 - 21:28 #10
Så bruger du IE, ikke?  Og har placeret scriptet i head.
Jeg burde have sagt at  document.body.clientWidth  ikke må aflæses før efter <body kommandoen. det er først da at IE har oprette body objektet i document.

mvh JakobA
Avatar billede jakoba Nybegynder
16. november 2001 - 21:31 #11
Hmm hvis $bredde er sat skal den test vel slet ikke genereres, er det ikke et andet dokument der skal redirectes til, hvor du bruger bredden til at sætte de korrekte mål.
Avatar billede munck Nybegynder
16. november 2001 - 21:35 #12
Jeg skal ikke bruge en

self.location.href =
eller en
window.location =

Scriptet står i toppen af siden, hvor resten af koden afvikles. Jeg har kun brug for bredden...

Skal bruges inde i asp-koden således:

<% if bredde = 1280 then %>
<img src=1_1280.jpg>
<% else %>
<img src=1_800.jpg>
<% end if %>

Mvh.
Munck

Avatar billede jakoba Nybegynder
16. november 2001 - 21:41 #13
Ok, men asp kode afvikles på serveren, idet den genererer en side at sende til klienten. Når siden er sendt er ASP stort set ude af billedet.

Så data der findes på klienten skal sendes retur til serveren (fx via en
    location.href = \"filnavn.asp?bredde=\"+winBred
før de kan have nogen effekt på kode asp skal generere.
Avatar billede munck Nybegynder
16. november 2001 - 22:16 #14
/jakoba

var winBred = document.body.clientWidth;

debugger melder fejl i denne linie
Object required
Avatar billede munck Nybegynder
16. november 2001 - 22:22 #15
Hvordan \"oversætter\" man

bredde = Request.QueryString(\"bredde\")

til javascript?
Det er sådan set den, jeg skal bruge.
Avatar billede jakoba Nybegynder
16. november 2001 - 22:35 #16
var urlpar = self.location.search.substr(1);
urlpar = urlpar.split(\"=\");
if ( urlpar.length == 2  &&  urlpar[0]==\'bredde\' ) {
    var bredde = urlpar[1];
} else {
    // bredde er ikke defineret
    // så her indsætter vi javascript koden til at finde winBred og sende den til servern.
}

er det det du vil hen til?

mvh JakobA
Avatar billede munck Nybegynder
16. november 2001 - 22:45 #17
Noget som dette (der jo ikke virker, da jeg ikke kender udtrykket for Request.QueryString)

var winBred = window.innerWidth;

if (winBred >= 1280) { br = \"1280\";
} else
if (winBred >= 1152) { br = \"1152\";
} else
if (winBred >= 1024) { br = \"1024\";
} else
if (winBred >= 800) {  br = \"800\";
} else
if (winBred >= 640) {  br = \"640\";
} else {    br = \"800\";
}
br = Request.QueryString(\"br\");
Avatar billede jakoba Nybegynder
16. november 2001 - 22:54 #18
Jamen du har jo lige beregnet br.
Javascript (på klienten) VED hvad br er.

vi skal have den værdi overfør til ASP. og ASP virker ikke på klienten. Det virker KUN på serveren.

vi kan ikke aktivere din asp kode lokalt på klienten. vi er nødt til at sende værdien til serveren på en eller anden måde
fx med:
      self.location.href = \"dennefil.asp?br=\"+br;
og asp så gennemgår den fil kan asp sige
      br = Request.QueryString(\"br\");
og bruge den variabel til at skrive de rigtige ting i den fil der så bliver sendt til browseren (klienten).

mvh JakobA
Avatar billede munck Nybegynder
16. november 2001 - 23:28 #19
Ja du har ret.
Javascriptet afvikles på klientsiden og ASP udelukkende på serveren.

Meeennn
Jeg mener man kan lægge br-værdien ind i et hidden inputfelt i en form. Problemet er at få skrevet javakoden til dette felt.

Formen kan eventuelt fyres fra en gennemsigtig gif(submit) i bunden af siden ved body onload, den del af problemet kan jeg godt løse - det er javakoden (funktionen), jeg ikke kan hitte ud af..

Mvh.
Munck
Avatar billede jakoba Nybegynder
16. november 2001 - 23:41 #20
Du skal nok have hjælp af en der kender ASP meget bedre end jeg.
Jeg vil anbefale du flytter spørgsmålet over i asp kaegorien og ser om ikke der er nogen der kan klare det der.
ref: http://www.eksperten.dk/spm/134929

mvh JakobA
Avatar billede munck Nybegynder
17. november 2001 - 00:21 #21
Noget i denne stil????

<body onload = \"javascript.getsize()>
<form enctype=\"multipart/form-data\" action=\"filnavn.asp\" method=\"POST\" name=\"form1\">
<javasriptet>
if ( document.all && ! navigator.userAgent.indexOf(\'Opera\')>=0 )
  var winBred = document.body.clientWidth;
else
  var winBred = window.innerWidth;
if (winBred >= 1280) { br = \"1280\";
} else
if (winBred >= 1152) { br = \"1152\";
} else
if (winBred >= 1024) { br = \"1024\";
} else
if (winBred >= 800) {  br = \"800\";
} else
if (winBred >= 640) {  br = \"640\";
} else {    br = \"800\";
}
document.write(\'<INPUT type=\"hidden\" name=\"test\" value=\"br\">\')
</script>

<INPUT type=\"img SRC=\"../images/del.gif\" onload=\"getsize()\" name=\"saveit\">
</form>
</body>

Altså med korrekt kode
Avatar billede jakoba Nybegynder
17. november 2001 - 00:50 #22
ja, det vil sende den korrekte værdi til dit asp script i filen filnavn.asp

mvh JakobA
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

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