henry: größe des Fensters berechnen

Hallo,

eine banale Frage...
Kann ich von javascript im eigenen Fenster die benötigte Größe berechnen.

d.h.

Ich habe mehrere input in einem Fenster erzeugt. Nun möchte ich das Fenster auf die "ideale" Größe verändern. Ist so etwas überhaupt möglich.

der henry

  1. Hi,

    Ich habe mehrere input in einem Fenster erzeugt. Nun möchte ich das Fenster auf die "ideale" Größe verändern. Ist so etwas überhaupt möglich.

    ja und nein.

    Natürlich kannst du Höhe und Breite des body-Elements auslesen und mit Höhe und Breite des html-Elements vergleichen. Dann weißt du, um wieviel du das Fenster mindestens vergrößern musst bzw. höchstens verkleinern darfst, so dass noch alles ohne Scrollen erreichbar ist.

    Da stößt du aber sehr schnell auf Grenzen. Zum Beispiel ist es sehr ärgerlich, wenn ein Programm (hier: Browser durch Javascript veranlasst) sein Fenster plötzlich größer macht als meinen Desktop - dann ragen nämlich Teile des Fensters über den Bildschirm hinaus und sind doch wieder nicht mehr erreichbar. Andererseits ist angesichts der heutigen Browser, die überwiegend das Tab-Konzept verwenden, das Vergrößern oder Verkleinern *eines* Fensters sowieso nicht mehr möglich, und selbst wenn, dann dürften viele Nutzer ihrem Browser "verboten" haben.

    Daher nur der gutgemeinte Rat: Lass es bleiben.

    So long,
     Martin

    --
    Er war ein Mann wie ein Baum. Sie nannten ihn Bonsai.
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
    1. Hallo,

      Natürlich kannst du Höhe und Breite des body-Elements auslesen und mit Höhe und Breite des html-Elements vergleichen. Dann weißt du, um wieviel du das Fenster mindestens vergrößern musst bzw. höchstens verkleinern darfst, so dass noch alles ohne Scrollen erreichbar ist.

      Das verstehe ich nicht wie du das meinst. "Höhe und Breite des body-Elements auslesen"
      Bitte einen kurzes Beispiel oder Link.... vielleicht sitze ich auch nur auf der Leitung.

      Wegen dem automatischen ändern.
      Ich erzeuge dynamische "Meldefenster" die mit <input radio> Auswahl quittiert werden müssen.
      Die Anzahl der <input radio> ist ebenfalls verschieden, daher will nach dem erstellen mit einem cgi-script das Fenster einmalig anpassen (onload). Die Fenster sind werden nie größer als ca.200x300px. Daher sehe ich keine Gefahr.

      Gruß
           henry

      1. Hallo henry,

        Das verstehe ich nicht wie du das meinst. "Höhe und Breite des body-Elements auslesen"
        Bitte einen kurzes Beispiel oder Link.... vielleicht sitze ich auch nur auf der Leitung.

        hast du meine Vorschläge ausprobiert?

        Gruß, Jürgen

  2. Hi,

    eine banale Frage...
    Kann ich von javascript im eigenen Fenster die benötigte Größe berechnen.

    müßte mit sowas wie scrollSize (oder scrollWidth + scrollHeight?) gehen, für den body oder das html-Element.

    Achtung, das ist die Netto-Größe.
    Bei einem Fenster mußt Du aber die Brutto-Größe angeben, also inkl. Titelleiste, Adreßleiste, Statusleiste usw.

    ggf. also mehrfach vergrößern, bis die tatsächliche Größe des html- bzw. body-Elementes mit der scrollSize zusammenpaßt.

    Ob der einzelne User das zuläßt, daß die Fenstergröße geändert werden darf, ist nochmal ein anderes Thema ...

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    O o ostern ...
    Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
  3. @@henry:

    nuqneH

    Ich habe mehrere input in einem Fenster erzeugt. Nun möchte ich das Fenster auf die "ideale" Größe verändern. Ist so etwas überhaupt möglich.

    Ja.

    Qapla'

    PS: Falls du weitere Informationen haben möchtest, solltest du dir überlegen, was man zur Beantwortung deine Fags noch für Informationen von dir bräuchte.

    --
    „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)
  4. Hallo henry,

    ich weiß zwar auch nicht, was du jetzt vor hast, aber für deine Teilprobleme habe ich in meiner Wühlkiste folgendes gefunden:

    Größe des Browserfensters:

    var getWinsize = function(){
      var r = { width:0, height:0 };
      if (document.documentElement && document.documentElement.clientWidth) r.width = document.body.clientWidth;
      else if (window.innerWidth) r.width = window.innerWidth;
      if (document.documentElement && document.documentElement.clientHeight) r.height = document.documentElement.clientHeight;
      else if (window.innerHeight) r.height = window.innerHeight;
      return r;
    }

    Größe (und Position) eines beliebigen Blockelements:

    var getRect = function (o){
      var r = { top:0, left:0, width:0, height:0 };
      if(!o) return r;
      else if(typeof o == 'string' ) o = document.getElementById(o);
      if( typeof o != 'object' ) return r;
      if(typeof o.offsetTop != 'undefined') {
        r.height = o.offsetHeight;
        r.width = o.offsetWidth;
        r.left = r.top = 0;
        while (o && o.tagName != 'BODY') {
          r.top  += parseInt( o.offsetTop );
          r.left += parseInt( o.offsetLeft );
          o = o.offsetParent;
        }
      }
      return r;
    }

    Gruß, Jürgen

    1. Hallo

      Größe (und Position) eines beliebigen Blockelements:

      var getRect = function (o){
        var r = { top:0, left:0, width:0, height:0 };
        if(!o) return r;
        else if(typeof o == 'string' ) o = document.getElementById(o);
        if( typeof o != 'object' ) return r;
        if(typeof o.offsetTop != 'undefined') {
          r.height = o.offsetHeight;
          r.width = o.offsetWidth;
          r.left = r.top = 0;
          while (o && o.tagName != 'BODY') {
            r.top  += parseInt( o.offsetTop );
            r.left += parseInt( o.offsetLeft );
            o = o.offsetParent;
          }
        }
        return r;
      }

      Ich benutze nun diese Funktion (body) und rechne ein paar pixel für Kopf dazu... funktioniert Prima.
      Als Übergabe funktioniert jedoch kein String ("body") sondern nur eine Objekt-Referenz unter Firefox 26.0. Das ist Schade da ich dem body immer eine "id" oder "name" geben muss.

      var objRef = document.getElementById("bodyid");  
      
      

      Vielleicht geht es einfacher/dynamischer ohne den <body> speziell zu verändern.

      Danke
             henry

      1. Hallo henry,

        warum benutzt du nicht getWinsize? Das misst das Browserfenster aus, also den Viewport.

        Den body kannst du mit document.body ansprechen. Probier mal

          gw = getWinsize();  
          gr = getRect(document.body);  
          alert(gw.width+" "+gw.height+"   "+gr.width+" "+gr.height);
        

        Gruß, Jürgen