Kan man ta reda på vilken upplösning klienten kör på sin sida? > <b>Kan man ta reda på vilken upplösning klienten kör på sin sida?</b> Visst finns det vissa fördelar med att veta vilken upplösning användaren har. Särskilt då de med 800x600 eller mindre, högre är kanske inte så intressant. Man kanske inte vill bygga hela hemsidan på det, men för att få en snygg startsida kanske.. > <b>Visst finns det vissa fördelar med att veta vilken upplösning användaren har. Särskilt då de med 800x600 eller mindre, högre är kanske inte så intressant.</b> Du måste använda ett javascript för det. På din startsida kan du lägga ett skript som pekar om till en annan sida. På min hemsida ligger följande script i en asp-sida: > <b>Om du vill se scriptet in action gå till min hemsida: mikael.propos.se</b> Koden ovan är ju ASP! > <b>Koden ovan är ju ASP!</b> Ha! Jag tycker att man ska använda mer procentsatser när man utvecklar sina sidor. Sätt bredd på tabeller med procentsatser så anpassas ju sidan automatiskt till webbläsarens storlek. Vill man spärra bredden kan man lägga in en transparent bild eller liknande som har den bredd man vill att sidan minst ska ha. Har inte kollat Pelles kod till Pellesoft men han har en liknande lösning antar jag. Hejsan! Vilken upplösning kör klienten?
Snabbt svar uppskattas... :-)Sv: Vilken upplösning kör klienten?
Beroende på vilken webbläsare en användare använder så kan man det!
Men betänk följande:
Vad spelar den upplösningen jag har för roll? Jag surfar aldrig i fullskärm, så att få reda på vilken upplösning jag kör har du ingen nytta av eftersom att mitt webbläsarfönster har en annan storlek.
Om det kommer någon med en webbläsare som du inte har stöd för i ditt upplösningsskript, hur kommer då din sida att bete sig?
Att bygga sidor efter hur stort webbläsarfönster någon har är bara fel och är bara att glömma! Ingen uppskattar sådana sidor!Sv: Vilken upplösning kör klienten?
Här har du iaf ett script(ASP) som inte är bearbetat på något sätt och jag minns inte vart jag hittade det, men det kanske hjälper.
Sida1 "index.asp":
<code>
<%
Dim strURL, strDocument, strDescription, strKeywords, strTitle
strURL = ""'Request.ServerVariables("URL") 'remember the slash
strDocument = "browser.asp" 'name of the page
strDescription = "This is the page description"
strKeywords = "this, is, a, listing, of, the, keywords, for, this, page"
strTitle = "testsida"
%>
<html><head>
<meta name="Description" content="<%= strDescription%>">
<meta name="Keywords" content="<%= strKeywords %>">
<title><%= strTitle %></title>
</head>
<body title="<%= strBodyTitle %>">
<%
If Len(Request.QueryString("b")) = 0 Then
Response.Write("<script language=""JavaScript"" type=""text/javascript"">" & vbNewLine)
Response.Write("breakFrames();" & vbNewLine)
Response.Write("var strNewLocation="""";" & vbNewLine)' // Used as placeholder
Response.Write("var strURL=""" & strURL & """;" & vbNewLine)' // URL of redirect document
'Response.Write("var strURL=""http://utvrickard/portal/"";" & vbNewLine)' // URL of redirect document
Response.Write("var strDocument=""" & strDocument & """;" & vbNewLine)' // Name of redirect document
Response.Write("var strBrowser = getBrowser();" & vbNewLine)
Response.Write("var strResolution = getResolution();" & vbNewLine)
'Response.Write("strNewLocation=strURL + strDocument + ""?b="" + strBrowser + strResolution;" & vbNewLine)
Response.Write("strNewLocation=strDocument + ""?b="" + strBrowser + strResolution;" & vbNewLine)
Response.Write("if((strBrowser == ""ie5"") || (strBrowser == ""ie4"") || (strBrowser == ""ie3"") || (strBrowser == ""ns4""))" & vbNewLine)
Response.Write(" {document.location.href=strNewLocation;}" & vbNewLine)' // Redirecting
Response.Write("else {document.location.href=""oldsite/index.html"";}" & vbNewLine)' // Redirecting to oldsite
'Kollar upplösningen
Response.Write("function getResolution(){" & vbNewLine)
Response.Write(" var iWidth, iHeight, sRes;" & vbNewLine)
Response.Write(" if (window.innerWidth != null) {" & vbNewLine)
Response.Write(" iWidth = window.innerWidth;" & vbNewLine)
Response.Write(" iHeight = window.innerHeight; " & vbNewLine)
Response.Write(" }" & vbNewLine)
Response.Write(" else if (document.body.clientWidth != null) {" & vbNewLine)
Response.Write(" iWidth = document.body.clientWidth;" & vbNewLine)
Response.Write(" iHeight=document.body.clientHeight;" & vbNewLine)
Response.Write(" }" & vbNewLine)
Response.Write(" else { iWidth = 640; }" & vbNewLine)
Response.Write(" if(iWidth <= 640) " & vbNewLine)
Response.Write(" {sRes = ""-640x480"";}" & vbNewLine)' // 640 x 480 Resolution
Response.Write(" else if(iWidth <= 800)" & vbNewLine)
Response.Write(" {sRes = ""-800x600"";}" & vbNewLine)' // 800 x 600 Resolution
Response.Write(" else if(iWidth <= 1024)" & vbNewLine)
Response.Write(" {sRes = ""-1024x768"";}" & vbNewLine)' // 1024 x 800 Resolution
Response.Write(" else if(iWidth <= 1280)" & vbNewLine)
Response.Write(" {sRes = ""-1280x1024"";}" & vbNewLine)' // 1280 x 1024 Resolution
Response.Write(" else if(iWidth <= 1600)" & vbNewLine)
Response.Write(" {sRes = ""-1600x1200"";}" & vbNewLine)' // 1600 x 1200 Resolution
Response.Write(" else {sRes = ""-0""}" & vbNewLine)
Response.Write(" return (sRes);" & vbNewLine)
Response.Write("}" & vbNewLine)
'Kollar webläsare
Response.Write("function getBrowser() {" & vbNewLine)
Response.Write(" var vBrowser=navigator.appName; " & vbNewLine)
Response.Write(" var vVersion=navigator.appVersion;" & vbNewLine)
Response.Write(" var sBrowser;" & vbNewLine)
Response.Write(" if (vBrowser.indexOf(""Microsoft"")>=0 && vVersion.indexOf(""6"")>=0)" & vbNewLine)
Response.Write(" {sBrowser=""ie5"";}" & vbNewLine) // Microsoft Internet Explorer 5.x
Response.Write(" else if (vBrowser.indexOf(""Microsoft"")>=0 && vVersion.indexOf(""5"")>=0)" & vbNewLine)
Response.Write(" {sBrowser=""ie5"";}" & vbNewLine)' // Microsoft Internet Explorer 5.x
Response.Write(" else if (vBrowser.indexOf(""Microsoft"")>=0 && vVersion.indexOf(""4"")>=0)" & vbNewLine)
Response.Write(" {sBrowser=""ie4"";}" & vbNewLine)' // Microsoft Internet Explorer 4.x
Response.Write(" else if (vBrowser.indexOf(""Microsoft"")>=0 && vVersion.indexOf(""3"")>=0)" & vbNewLine)
Response.Write(" {sBrowser=""ie3"";}" & vbNewLine)' // Microsoft Internet Explorer 3.x
Response.Write(" else if (vBrowser.indexOf(""Netscape"")>=0 && vVersion.indexOf(""6"")>=0)" & vbNewLine)
Response.Write(" {sBrowser=""ns6"";}" & vbNewLine)' // Netscape Navigator 6.x
Response.Write(" else if (vBrowser.indexOf(""Netscape"")>=0 && vVersion.indexOf(""4"")>=0)" & vbNewLine)
Response.Write(" {sBrowser=""ns4"";}" & vbNewLine)' // Netscape Navigator 4.x
Response.Write(" else if (vBrowser.indexOf(""Netscape"")>=0 && vVersion.indexOf(""3"")>=0)" & vbNewLine)
Response.Write(" {sBrowser=""ns3"";}" & vbNewLine)' // Netscape Navigator 3.x
Response.Write(" else" & vbNewLine)
Response.Write(" {sBrowser=""other"";}" & vbNewLine)' // All Others
Response.Write(" return(sBrowser);" & vbNewLine)
Response.Write("} " & vbNewLine)
'Kollar om man ligger i en frame
Response.Write("function breakFrames(){" & vbNewLine)
Response.Write(" if(self.parent.frames.length != 0)" & vbNewLine)
Response.Write(" {self.parent.location = document.location;}" & vbNewLine)
Response.Write("}" & vbNewLine)
Response.Write(vbNewLine)
Response.Write("</script>" & vbNewLine)
Else
Dim browser, resolution, part
part = Split(Request.QueryString("b"),"-")
browser = part(0)
resolution = part(1)
Response.Write("Du använder " & UCase(browser) & " som webläsare med " & resolution & " upplösning.<br>")
End If
%>
<!-- Page to show to search engines and browsers that do not support javascript -->
</body>
</html>
</code>
Sida2 "browser.asp":
<code>
<html><head>
<title>resultatsida</title>
</head>
<body>
<%
Dim browser, resolution, part
part = Split(Request.QueryString("b"),"-")
browser = part(0)
resolution = part(1)
Response.Write("Du använder " & UCase(browser) & " som webläsare med " & resolution & " upplösning.<br>")
%>
</body>
</html>
</code>Sv: Vilken upplösning kör klienten?
Jag är ledsen om jag är tjatig, men jag uppfattar den här typen av försök till klientstyrning som oerhört frustrerande att springa på (någon som minns Telias webb och de hundratals kunder som sa upp sina abb?).
Kan du berätta vilkea fördelar du ser med att få reda på min klients upplösning när jag surfar till din sida?Sv: Vilken upplösning kör klienten?
if (window.screen.availWidht == 800)
document.location.href = '800.asp';
else
document.location.href = 'moreThan800.asp';
Saker som rör klienten GÅR inte att anropa på servern eftersom det är SERVERN som exekverar koden. Undantaget är vissa Browers-egenskaper, som alltid skickas med i HTTP-huvudet.
Om du vill se scriptet in action gå till min hemsida: mikael.propos.se
//Mikael.NETSv: Vilken upplösning kör klienten?
Mycket tack för det exemplet, det illustrerar min ståndpunkt mycket väl!
Om jag (från min laptop på jobbet) surfar till din webb i ett maximerat fönster så hamnar jag på 1024, vilket är min upplösning! Och sidan ser antagligen ut som du tänkt dig.
Om jag istället surfar till din sida i ett icke-maximerat fönster så får jag fortfarande 1024, fastän att mitt fönster kanske är 400x600, vilket medför att din sida drabbas av otrevliga rullningslister påde till höger och på nerderkanten!
Här har vi ett typexempel på varför en klients upplösning överhuvudtaget inte har någon som helst relevans för en webbutvecklare! vad som möjligtvis skulle kunna ha relevans är storleken på min webbläsare, men även det är jag kritisk till att man ska kolla!
UPDATE:
Provade nu med en klient med JavaScript avslaget (Opera 7), då kommer man inte ens en gång in på webbsidan utan fastnar på "Kollar din upplösning"!Sv: Vilken upplösning kör klienten?
Jag använder det på en hemsida där det finns en dynamisk nyhetsruta till höger på startsidan som hämtar olika antal poster beroende på vilken upplösning klienten har så att det inte ska bli några irriterande scrollningslister.Sv: Vilken upplösning kör klienten?
Det enda ASP i ditt fall gör är att skriva ut ett client-side JavaScript! Det finns ingenting i din ASPkod som kollar klientens upplösning, utan det är fortfarande JavaScriptet som gör det!Sv: Vilken upplösning kör klienten?
Det har du rätt i. Där ser man ju hur noggrant jag har kollat igenom koden :/Sv: Vilken upplösning kör klienten?
Dessutom tycker jag att utvecklare allmänt bör sluta att använda sig av pixlar i fontstorlekar. Det är inte roligt att sitta med en 22-tummar med gigantisk upplösning och någon har satt pixelstorleken på en sida till 10. 12px är inte supersynligt om man ser dåligt heller men det är acceptabelt om dom som besöker sidan har bra syn.Sv: Vilken upplösning kör klienten?
Att anpassa en hemsida efter en speciell upplösning tycker jag är dumt.
En bra anledning till varför man kan vilja ha reda på klientens upplösning är t ex om man vill placera ett fönster mitt på skärmen.
Ciao!
Tom S.