Laden...

Wie einer aspx-Seite die Browserfenstergröße vor Render mitteilen?

Erstellt von haargel vor 14 Jahren Letzter Beitrag vor 14 Jahren 2.971 Views
H
haargel Themenstarter:in
264 Beiträge seit 2005
vor 14 Jahren
Wie einer aspx-Seite die Browserfenstergröße vor Render mitteilen?

Wie kann ich einer aspx-Seite die Browserfenstergröße vor dem serverseiten PageLoad bzw. PreRender mitteilen, damit ich meine Servercontrols gleich in der passenden Größe rendern kann?

Was ich bisher ausprobiert habe:

  1. Über Cookies. Im Header der aufgerufenen aspx-Seite habe ich ein Javascript, das die Fenstergröße ausliest und die Werte dann als Cookie setzt die ich dann in PageLoad serverseitig auslese. Allerdings funktioniert das nicht und wenns geht möchte ich Cookies vermeiden.

  2. Im Header der aufgerufenen aspx-Seite habe ich ein Javascript, das die Fenstergröße ausliest und dann

window.location += "?width=" + width + "&height=" + height;

ausführt. Serverseitig lese ich die beiden Varialen aus dem Querystring aus. Das funktioniert zwar, doch es sind 2 Aufrufe der Webseite nötig und die Url wird verändert - Also nicht optimal!

  1. Eine Dummyseite mit einem Formular das die beiden Werte per POST an die eigentliche aspx-Seite überträgt. Das funktioniert zwar auch, ist aber ziemlich langsam - Also nicht wirklich akzeptabel!

  2. Drittanbieter-Controls wie dockable Panels darf ich nicht verwenden.

  3. Eine Idee: Die Servercontrols werden ja großteils zu div's umgewandelt und gerendert deren width und height per css-style eingestellt wird. Jetzt wäre es toll, wenn statt

style="width:1200px;height:780px"

etwas wie

style="width:'javascript:fensterbreite';height:'javascript:fensterhoehe'"

rendern könnte, wobei die beiden Variablen "fensterbreite" und "fensterhoehe" wieder im script-Tag des Header erzeugt werden. Natürlich funktioniert das so nicht, aber gäbe es eine Möglichkeit bei Inline-CSS Javascriptvariablen einzuschleusen?

H
haargel Themenstarter:in
264 Beiträge seit 2005
vor 14 Jahren

Ich verzweifel noch an diesem Zeug 😦

Gibt es denn keine einfache Möglichkeit dem Server mitzuteilen wie groß das momentane Browserfenster ist?

270 Beiträge seit 2005
vor 14 Jahren

Hallo haargel,

du könntest die Width und Height über dein JavaScript ermitteln und dann an einen WebService schicken!

Wobei es überhaupt fraglich ist ob man seine Control der Größe des Browser-Fenster anpassen sollte, was wenn kein JavaScript aktiviert ist? Normalerweise sollte man versuchen seine Controls so zu schreiben das sie mit CSS gut formatiert werden können und dann beim CSS möglichst wenig absolute angaben zu width & heigth verwenden.

mfg Hulk

H
haargel Themenstarter:in
264 Beiträge seit 2005
vor 14 Jahren

Ja, Javascript ist Voraussetzung für diese Anwendung.
Absolutes Positionieren lässt sich leider nicht vermeiden, und der Wunsch ist, dass das Fenster ausgefüllt wird.
Toll wäre natürlich überall width und height auf 100% zu setzen, aber das verträgt sich nicht mit absolutem Positionieren 😃

Dein Vorschlag mit dem Webservice ist so ähnlich wie mein Versuch 2). Du meinst, dass der Webservice nach dem Aufruf eine Art Redirect auf die aspx-Seite ausführt? Kann Javascript eigentlich eine Webservice Methode aufrufen?

270 Beiträge seit 2005
vor 14 Jahren

Hallo haargel,

Dein Vorschlag mit dem Webservice ist so ähnlich wie mein Versuch 2). Du meinst, dass der Webservice nach dem Aufruf eine Art Redirect auf die aspx-Seite ausführt?

Jaein, der Browser ruft nach einem Browser-Event (sowas wie OnLoad)
den Webservice auf und übergibt ihm die Width/Height und wenn die Daten am Server
hast kannste damit ja machen was du willst, problematisch könnte es sein die Empfangen Daten einem Client zuzuordnen evtl. solltest du hier eine Id übermittlung in betracht ziehen.

Kann Javascript eigentlich eine Webservice Methode aufrufen?

Ja das geht aber wie die Details dafür aussehen solltest du über Google erfragen (normalerweise bietet ASP eine Reihe von Möglichkeiten damit man sich nicht um alles kümmer muss).

mfg Hulk

H
haargel Themenstarter:in
264 Beiträge seit 2005
vor 14 Jahren

Also gibt es keine simple Lösung für dieses Problem? 😉

Eigentlich hört es sich so einfach an: "Ich möchte gerne die momentane Browserfenstergröße beim ersten PageLoad-Event am Server haben".

5.941 Beiträge seit 2005
vor 14 Jahren

Hallo haargel

Hört sich einfach an, ist es aber nicht 😉.
Das ist unmöglich, so wie du es möchtest.

Crossposts werden auf beiden Foren nicht geduldet, der Vollständigkeitshalber die den zweiten Thread auf ASP.NET Zone:

Gruss Peter

--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

H
haargel Themenstarter:in
264 Beiträge seit 2005
vor 14 Jahren

Sorry, ich wusste nicht, dass die beiden Foren etwas miteinander zu tun haben. schäm

5.941 Beiträge seit 2005
vor 14 Jahren

Hallo haargel

Sie haben nicht wirklich was miteinander zu tun, ausser das die gleiche Regelung bei beiden Foren im Regelwerk steht. Das ist wichtig.

Gilt also auch für alle andere Foren, diese Regelung ist gebräuchlich und auch verständlich.

Danke das du es in Zukunft beachtest!

Gruss Peter

--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011