Avatar billede Jman Praktikant
11. januar 2004 - 17:21 Der er 40 kommentarer og
1 løsning

hente screen resolution ind som variabel

Jeg vil prøve at lave en variabel tabel ud fra brugerens opløsning. Jeg har fundet denne:

<script>
<!--
document.write("screen width=" + screen.width + "<br>");
document.write("screen height=" + screen.height + "<br>");
document.write("available screen width=" + screen.availwidth + "<br>");
document.write("available screen height=" + screen.availheight + "<br>");
//-->
</script>

til at skrive størrelsen ud, men hvordan kan jeg på en asp-side hente oplysningerne ind, som variabler ?
Avatar billede thesurfer Nybegynder
11. januar 2004 - 17:25 #1
du skifter side location til noget med "?".. dvs:

...="side.asp?sw=" + screen.width + "&sh=" + screen.height + "&saw=" + screen.availwidth + "&sah=" & screen.availheight

Derefter bruger du asp koden request.querystring("variabelnavn-i-urlen):
response.write "screen width is: " & request.querysring("sw")
response.write "screen height is: " & request.querysring("sh")
response.write "screen avail width is: " & request.querysring("saw")
response.write "screen avail height is: " & request.querysring("sah")

Eller hvordan du så vil bruge det..
Avatar billede htm Nybegynder
11. januar 2004 - 17:25 #2
Du kan ikke hente opløsningen via ASP, der skal du bruge javascript.
Avatar billede Jman Praktikant
11. januar 2004 - 17:30 #3
jeg vil ikke skifte siden fysisk, i forhold til brugerns opløsning. Jeg vil derimod opbygge tabellerne..

lidt a´la <table width=screen.width cellspacing=0 cellpadding=0>

Men jeg kan ikke få scree.width-værdien ind, så jeg tænkte at gemme den i en variabel, så jeg kan skrive
<table width=<%=screenwidth-variablen%>cellspacing=0 cellpadding=0>
Avatar billede thesurfer Nybegynder
11. januar 2004 - 17:33 #4
Her er en ide:
På forsiden fanger du opløsningen. Derefter sendes brugeren (enten automatisk eller han/hun klikker på "Videre") til den rigtige side.
Når den rigtige sides skal dannes, bruger du:
<table width=<%=screenwidth-variablen%>cellspacing=0 cellpadding=0>

Du kan gemme opløsningen i en session eller cookie:
Sessions: http://html.dk/tutorials/asp/lektion12.asp
Cookies: http://html.dk/tutorials/asp/lektion13.asp
Avatar billede Jman Praktikant
11. januar 2004 - 17:36 #5
ja, det kan jeg også gøre - og det virker også.... men jeg ville allerhelst kunne lave det hele i samme side
Avatar billede thesurfer Nybegynder
11. januar 2004 - 17:41 #6
Det kan ikke vist lade gøre.. med mindre at du køber BrowserHawk komponenten, og installerer den..

ASP koden afvikles før JavaScript/HTML koden..
Måske kan man ændre tabel højde/bredde med JavaScript direkte.. der skal du nok have fat i roenving eller olebole.. eller søg på nettet..
Avatar billede Jman Praktikant
11. januar 2004 - 17:43 #7
ok - så er jeg lige der hvor jeg starrtede :)
ud over en smule mere erfaring ..
ligger du et svar
Avatar billede thesurfer Nybegynder
11. januar 2004 - 17:43 #8
hmm.. hvad nu hvis du laver en standard bredden og højde der passer til f.eks. 800x600.. så kan du måske ha' et gennemsigtigt billede i en celle, som du så ændre bredde på, via JavaScript..? Og en anden til højden..

Men det her er en ASP kategori.. hvis du skal bruge noget af det der, skal du nok spørge i JavaScript kategorien..
Avatar billede thesurfer Nybegynder
11. januar 2004 - 17:43 #9
Det kan jeg godt :)
Avatar billede deeflate Nybegynder
11. januar 2004 - 17:45 #10
Jeg mener, du kan godt sætte en tabels width via DOM. Lige et øjeblik, så skal jeg se på det.
Avatar billede thesurfer Nybegynder
11. januar 2004 - 17:46 #11
Når man skal mixe JavaScript og ASP kode, skal man nogle gange bare være lidt kreativ.. :)
Man kan nemlig ikke share/dele variabler mellem de 2 sprog..
Avatar billede deeflate Nybegynder
11. januar 2004 - 17:48 #12
Følgende ændrer i hvert fald with:

<html>
<head>
<script type="text/javascript">
function setBorder()
{
document.getElementById('myTable').width="500"
}
</script>

</head>

<body>

<table border="1" id="myTable">
<tr>
<td>Row1 cell1</td>
<td>Row1 cell2</td>
</tr>
<tr>
<td>Row2 cell1</td>
<td>Row2 cell2</td>
</tr>
</table>

<form>
<input type="button" onclick="setBorder()" value="Change Borders">
</form>

</body>
</html>
Avatar billede grunken Nybegynder
11. januar 2004 - 17:48 #13
hvofor som deflate siger ikke bare lave det via DOM

document.getElementById('tabelID').style.width = document.body.offsetWidth+"px";
Avatar billede Jman Praktikant
11. januar 2004 - 18:17 #14
deeflate .. jeg er ikke så god til javascripting, og forstår ikke hvordan det automatisk skulle kunne sætte table width. Jeg går efter en redirect i stedet :)
Avatar billede nute Nybegynder
11. januar 2004 - 18:21 #15
ehh ... hvorfor bruger du ikke bare

Request.ServerVariables("HTTP_UA_PIXELS")

på din side, så får du opløsningen til brugeren ...

/nute
Avatar billede thesurfer Nybegynder
11. januar 2004 - 18:22 #16
nute> Fordi det kun understøttes af browsere af version ældre end 4!
Eller også var det endnu længere tilbage..

med andre ord: _ua_pixels understøttes ikke mere.
Avatar billede deeflate Nybegynder
11. januar 2004 - 18:23 #17
Du kan bare bruge onLoad.
Avatar billede thesurfer Nybegynder
11. januar 2004 - 18:23 #18
skulle have været: version nyere end 4
Avatar billede deeflate Nybegynder
11. januar 2004 - 18:23 #19
Prøv at køre dette her, så kan du se hvad jeg mener:

<html>
<head>
<script type="text/javascript">
function setWidth()
{
document.getElementById('myTable').width="500"
}
</script>

</head>

<body onLoad="setWidth()">

<table border="1" id="myTable">
<tr>
<td>Row1 cell1</td>
<td>Row1 cell2</td>
</tr>
<tr>
<td>Row2 cell1</td>
<td>Row2 cell2</td>
</tr>
</table>

</body>
</html>
Avatar billede Jman Praktikant
11. januar 2004 - 18:24 #20
nute: den kender jeg ikke... hvorledes skal den benyttes ?
Avatar billede thesurfer Nybegynder
11. januar 2004 - 18:25 #21
superior> glem _ua_pixels. Brug onLoad.
Og f.eks.: document.getElementById('myTable').width=screen.availwidth;
Avatar billede deeflate Nybegynder
11. januar 2004 - 18:26 #22
Og her er en oversigt over de forskellige elementer og hvordan du får deres bredde:

http://msdn.microsoft.com/library/default.asp?url=/workshop/author/om/measuring.asp
Avatar billede Jman Praktikant
11. januar 2004 - 18:30 #23
OK - jeg gav det et forsøg...
med document.getElementById('myTable').width=screen.availwidth;
får jeg dog en vertikal scroll (tabellen ca. 30 pixels for bred)
Avatar billede deeflate Nybegynder
11. januar 2004 - 18:31 #24
Brug i stedet offsetWidth eller clientWidth
Avatar billede nute Nybegynder
11. januar 2004 - 18:35 #25
thesurfer >> aha ... man lærer noget nyt hver dag :-)
Avatar billede Jman Praktikant
11. januar 2004 - 18:37 #26
skal den så hedde document.getElementById('myTable').width=clientWidth ?
for det virker ikke hos mig :/
Avatar billede deeflate Nybegynder
11. januar 2004 - 18:42 #27
f.eks.:

document.getElementById('myTable').width = document.body.offsetWidth
Avatar billede Jman Praktikant
11. januar 2004 - 18:46 #28
O.K. Jeg takker mange gange :))
Avatar billede deeflate Nybegynder
11. januar 2004 - 18:48 #29
thesurfer >> skal vi finde ud af at bytte point?
Avatar billede Jman Praktikant
11. januar 2004 - 18:55 #30
Dem giver jeg - det er jo ikke thesurfer's skyld
http://www.eksperten.dk/spm/450263
Avatar billede thesurfer Nybegynder
11. januar 2004 - 18:56 #31
deeflate> Det kan vi godt.. så skal superior ikke af med alt for mange points :)
Avatar billede thesurfer Nybegynder
11. januar 2004 - 19:02 #32
deeflate> Snydt! Nu er det herover http://www.eksperten.dk/spm/450265 :)
Avatar billede Jman Praktikant
11. januar 2004 - 19:16 #33
TILLÆGSSPØRGSMÅL:
... hvis I altså lige gider ...

Da jeg allerede nu kan se at det klart vil være en fordel at have bredden i en variabel har jeg lavet følgende forsøg (se ndenfor).
Jeg ved godt at det eleminere alt ovenstående, men da det virker efter hensigten, vil jeg lige høre om I umiddelbart kan se ulemper ved den metode jeg har udarbejdet nu.

kode:
ScrWidth = session("ScrWidth")
if ScrWidth = "" then
ScrWidth = request("ScrWidth")
if ScrWidth = "" then
%>
<script language="JavaScript">
<!--
var Wide = screen.width;

if (Wide <= 640){
  window.location = "?ScrWidth=640";
}

else if (Wide <= 800){
  window.location = "?ScrWidth=640";
}

else if (Wide <= 1024){
  window.location = "?ScrWidth=1024";
}

else {
  window.location = "?ScrWidth=1280";
}

//-->
</script>
<%
end if
session("scrWidth") = request("ScrWidth")
end if %>
Avatar billede thesurfer Nybegynder
11. januar 2004 - 19:39 #34
Hvad er det du gør her?:
ScrWidth = session("ScrWidth")
if ScrWidth = "" then
ScrWidth = request("ScrWidth")
if ScrWidth = "" then

Smider den i en session, og derefter checker om der er noget?
Avatar billede deeflate Nybegynder
11. januar 2004 - 19:40 #35
skulle det ikke være ?SrcWidth=800 her?

else if (Wide <= 800){
  window.location = "?ScrWidth=640";
}


Set'ter du din session i en global.asa eller hvordan?
Ellers skal du jo have gjort det her, for der er ingen idé i at have den, hvis du aldrig fylder noget i...
Avatar billede deeflate Nybegynder
11. januar 2004 - 19:41 #36
thesurfer >> Blev også lige lidt forvirret...
Avatar billede Jman Praktikant
11. januar 2004 - 19:45 #37
jo! Den med 800 var en bug...

Jeg laver variablen ScrWidth ud fra session("ScrWidth"). Hvis den er tom aspørger jeg efter variablen i adreselinien.
Dog: hvis det er første side/første besøg er adresselinien jo også tom og derfor laver jeg endnu en forespørgsel
Avatar billede thesurfer Nybegynder
11. januar 2004 - 20:00 #38
Ahh.. nu giver det mening.. virker det ikke?
Avatar billede thesurfer Nybegynder
11. januar 2004 - 20:01 #39
ahhh.. huskede lige hvad det var du spurgte om :)
Jeg mener at man kan slå Sessions fra.. så ville den vel loope hele tiden.. ville den ikke det?
Avatar billede thesurfer Nybegynder
11. januar 2004 - 20:04 #40
næh.. den er vist god nok.. hvad siger i andre..?
Hvis sessions er slået fra, vil den alligevel check urlen.. og dermed har du sikret dig at den ikke looper..
Avatar billede Jman Praktikant
11. januar 2004 - 20:05 #41
det virker fint - det var bare om der var noget andet man evt. skulle have taget højde for :)
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
Kurser inden for grundlæggende programmering

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