Hente browser størrelse til variabel

Tags:    asp.net

Hej!

Jeg har lidt problemer med at finde en metode til at få browser vinduets størrelse til et variabel. Findes der en funktion til dette og hvilken?



8 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 1 karma
Sorter efter stemmer Sorter efter dato
Ikke i ASP.NET
Men i javascript kan du gøre det med følgende:
window.innerWidth
window.innerHeight
Eller
document.body.offsetWidth
document.body.offsetHeight



Og hvordan får jeg så det variabel over i min code-behind? ;)
Jeg ved at document.body.clientWidth vil give mig bredden, men der må da være en måde at kalde en funktion som returnerer variablet så jeg kan bruge det



Hvad vil du bruge den til? Så kan jeg måske give dig nogle muligheder...



Ja altså enten skal jeg se om vinduets størrelse er under en bestemt bredde, eller også skal jeg kalkulere et Google maps' bredde ud fra bredden. Muligvis også en sidebar som kan være ivejen ved lavere opløsninger.
Alt dette gøres i min code-behind, VB. Jeg har som i det andet indlæg, skrevet en funktion til dette, men jeg er rimelig ny i JS og aner simpelthen ikke hvordan jeg får afviklet dette til at jeg returnerer variablen "ud fra JavaScriptet", hvis du forstår.




Indlæg senest redigeret d. 22.07.2008 13:44 af Bruger #13985
Hey, fandt lige noget:
Lav en cookie i dit JS hvor du finder bredden og vidden af vinduet, load den bagefter med VB!



Tjo, må prøve at kigge på det en gang, det er i hvert fald en mulighed.



Indlæg senest redigeret d. 22.07.2008 13:44 af Bruger #13985
UTESTET:

<input type="hidden" runat="server" id="windowWidth" />
<input type="hidden" runat="server" id="windowHeight" />

JS:
window.onload = function(){

var myWidth = 0, myHeight = 0;
if( typeof( window.innerWidth ) == 'number' ) {
//Non-IE
myWidth = window.innerWidth;
myHeight = window.innerHeight;
} else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
//IE 6+ in 'standards compliant mode'
myWidth = document.documentElement.clientWidth;
myHeight = document.documentElement.clientHeight;
} else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
//IE 4 compatible
myWidth = document.body.clientWidth;
myHeight = document.body.clientHeight;
}
document.getElementById(<%#windowWidth.clientID%>;).value = myWidth;
document.getElementById(<%#windowHeight.clientID%>;).value = myHeight;

}

Du kan altså ikke i første request læse JS variablerne..

Men ellers i andet postback, skulle windowWidth.Text gerne give en værdi.

Brug evt i page_load,

if windowWidth.Text == '' then
response.redirect(.)
end if <-- eller hvordan f.... vb nu engang skal se ud.

Pas på en træls løkke, hvis du skulle støde på en enhed, der ikke giver nogen værdi til felterne, eller ikke har JS aktiveret - Lav noget fall back.



hmmm du kunne også lave et asynkront kald til en service, og gemme i session, når siden hentes, hvor du smider JS variablerne med over.

Så har du dem ved første request, og er måske noget smukkere.

/J





t