Joachim: Fenstergroesse

hallo,
beim NC kann ich per self.innerHeight, bzw.self.innerWidth die Fenstergroesse abfragen, der MSIE gibt nur undefined zurueck. Irgendwas hab ich ueberlesen, welche Formulierung braucht der MSIE?

Gruss Joachim

  1. Hi,

    beim NC kann ich per self.innerHeight, bzw.self.innerWidth die Fenstergroesse abfragen, der MSIE gibt nur undefined zurueck. Irgendwas hab ich ueberlesen, welche Formulierung braucht der MSIE?

    der MSIE kann das in der Tat nicht, dort mußt Du document.body.clientWidth / .clientHeight benutzen. Weiterer Nachteil: Du kannst nur die Breite von Fenstern abfragen, deren Inhalt von Deiner Domain stammt. Wenn Deine Seite in einem fremden Frameset steht, gibt es zu top.innerWidth kein MSIE-Äquivalent.

    Cheatah

    1. Hi Cheatah,
      danke, das klappt. Jetzt wollte ich so wie bei NC eine Grafik abhaengig von der Fenstergroesse skalieren, aber auch das mag der MSIE nicht:

      <IMG SRC="hintergrund.jpg" WIDTH="&{Math.ceil(document.body.clientWidth*1.00)};"  HEIGHT="&{Math.ceil(document.body.clientHeight*0.10)};">

      funktioniert beim NC einwandfrei. Nochwas: onResize mag MSIE offenbar auch nicht :-( da stellt sich zu spaeter Stunde doch langsam der Frust ein, vor allem, wenn die Lehrbuecher sich ausschweigen...

      Kannst Du oder jemand anderes im Forum mir nochmal weiterhelfen?

      Gruss und weiterhin frohe Ostereier Joachim

      1. funktioniert beim NC einwandfrei.

        Oh je, natuerlich nur mit der NC Formulierung:

        <IMG SRC="hintergrund.jpg" WIDTH="&{Math.ceil(self.innerWidth*1.00)};"  HEIGHT="&{Math.ceil(self.innerWidth*0.10)};">

        Sorry wegs der Unklarheit

        Gruss Joachim

      2. Hi,

        <IMG SRC="hintergrund.jpg" WIDTH="&{Math.ceil(document.body.clientWidth*1.00)};"  HEIGHT="&{Math.ceil(document.body.clientHeight*0.10)};">

        hm... fällt mir momentan nichts zu ein. Wie sieht denn im IE das Ergebnis aus? Welche Fehlermeldung, wie lautet der Quellcode genau(!), was zeigt der Browser an (falls)?

        Cheatah

        1. hi Cheatah,
          Du warst aber schon frueh online :-) Also, hier handelt es sich um JavaScript Entities, d. h. das Script ist direkt im Html Code eingebunden. (Nachzulesen im Stefan Mintert JS 1.2 Buch) Diese Moeglichkeit erlaubt NC ab 3.x
          Wahrscheinlich liegt darin das eigentliche Problem, ich schaetze, MSIE mag keine Entities, er zeigt die Grafik gar nicht an :-(
          Nochmal der Code, wird einfach so in den Body geschrieben und funktioniert beim NC einwandfrei.

          <IMG SRC="hintergrund.jpg" WIDTH="&{Math.ceil(self.innerWidth*1.00)};"  HEIGHT="&{Math.ceil(self.innerWidth*0.10)};">

          mehr braucht es nicht!
          Hier nochmal die zweite Frage: hat MSIE ein Problem mit onResize?
          Ich experimentiere derzeit etwas mit Groessenanpassung ans Browserfenster herum, daher diese Fragen...

          Also, wuerde mich ja freuen, wenn Dir oder sonst jemand noch was nettes einfaellt!

          Gruss Joachim

          1. Moin Joachim,

            <IMG SRC="hintergrund.jpg" WIDTH="&{Math.ceil(self.innerWidth*1.00)};"  HEIGHT="&{Math.ceil(self.innerWidth*0.10)};">

            wenn ich Dich richtig verstehe, willst Du die Grafik über die gesamte Fensterbreite ausdehnen und die Höhe soll 10% der Breite betragen?

            Das müsste mit den beiden "großen" Browsern ab V4 und soweit ich weiß auch mit älteren Versionen gehen:

            <IMG SRC="..." WIDTH=100%>

            Die Grafik muß dann allerdings vorher schon das entsprechenden Verhältnis Breite/Höhe haben, da die Höhe bei diesem Befehl einfach im gleichen Verhältnis wie die Breite angepasst wird.

            Siehe dazu auch: <../../sfarchiv/1999_1/t02116.htm#a9666>.

            Gruß
            Dirk

            PS: Zu OnResize kann ich leider nichts sagen, hab ich noch nie benutzt!

            1. hi Dirk,
              warum einfach, wenns auch kompliziert geht ;-) Ich experimentiere derzeit mit Groessenanpassung und versuche erst mal zu lernen, wie ich verschiedene Dinge ausdruecke. Es macht schon Sinn, mit JavaScript zu arbeiten, den eine einfache Prozentangabe zum Skalieren der Grafik wuerde irgendwann das Layout killen.
              Ich denke daran, die Skalierung nur wohldosiert in einem bestimmten (realistischen) Bereich durchzufuehren, und mit einer Schriftgroessenanpassung (CSS) zu verbinden. Vielleicht verrenne ich mich da in was...ist aber auch meine persoenliche JS-Grundlagenforschung:-)
              Das wars erst mal, danke Dir fuer Dein posting :-))

              Gruss Joachim

          2. Hallo,

            Also, hier handelt es sich um JavaScript Entities, d. h. das Script ist direkt im Html Code eingebunden. (Nachzulesen im Stefan Mintert JS 1.2 Buch) Diese Moeglichkeit erlaubt NC ab 3.x
            Wahrscheinlich liegt darin das eigentliche Problem, ich schaetze, MSIE mag keine Entities, er zeigt die Grafik gar nicht an :-(
            <IMG SRC="hintergrund.jpg" WIDTH="&{Math.ceil(self.innerWidth*1.00)};"  HEIGHT="&{Math.ceil(self.innerWidth*0.10)};">

            Ob der die Entities mag, kann ich jetzt nicht auf Anhieb sagen, hab' sie nie benutzt, immer komplett per Javascript ausgegeben, wuesste auch nicht, bei MS was dazu gelesen zu haben.

            Aber eins versteht er sicher nicht:
               innerWidth und innerHeight
            Die sind Netscape-Syntax.
            Fuer MSIE koenntest Du alternativ evtl.
              document.body.clientWidth und document.body.clientHeight
            verwenden.

            Und ob fuer solche Unterscheidungen Entities, so sie denn bei beiden funktionieren, noch das geieignete Mittel sind?

            Hier nochmal die zweite Frage: hat MSIE ein Problem mit onResize?

            Wie aeussert sich  das?
            Ich kenne nur den Netscape-Bug bei onresize.

            Christine

            1. Hi Christine,

              Fuer MSIE koenntest Du alternativ evtl.
                document.body.clientWidth und document.body.clientHeight
              verwenden.

              danke fuer Deine Tips, aber das mag MSIE auch nicht, hatte ich schon probiert.

              Hier nochmal die zweite Frage: hat MSIE ein Problem mit onResize?
              Wie aeussert sich  das?

              also, zunaechst habe ich die Fenstergroesse lediglich abgefragt und per alert angezeigt, eine Veraenderung des Browserfensters oeffnete dann einen entsprechend aktualisierten alert. Leider nur bei NC 4.5, nicht bei MSIE 4.0.1, fand ich seltsam.

              Gruss Joachim

              1. Fuer MSIE koenntest Du alternativ evtl.
                  document.body.clientWidth und document.body.clientHeight
                verwenden.
                danke fuer Deine Tips, aber das mag MSIE auch nicht, hatte ich schon probiert.

                Doch, das mag er (s.a. Bsp. weiter unten).

                Allerdings,  wohl nicht in Entities.
                Bei Stefan Mintert - Du hast es in d.c.l.js gelesen? - klingt das auch eher so, dass man die nicht von MSIE erwarten koenne.
                Zitat:
                   "Bei meinem letzten Versuch hat MSIE die JS-Entities noch nicht beherrscht.
                    Sie sind IMO bislang auch noch nirgends standardisiert, so dass deren
                    Fortbestand (wie bei so vielem anderen) fraglich ist..."

                Hier nochmal die zweite Frage: hat MSIE ein Problem mit onResize?
                Wie aeussert sich  das?
                also, zunaechst habe ich die Fenstergroesse lediglich abgefragt und per alert angezeigt, eine Veraenderung des Browserfensters oeffnete dann einen entsprechend aktualisierten alert. Leider nur bei NC 4.5, nicht bei MSIE 4.0.1, fand ich seltsam.

                Hm, das habe ich jetzt probiert, hatte schliesslich bisher nie ein Problem damit.
                Mein Ganz-auf-Schnelle-Experiment kann man hier "bewundern":
                http://www.screenExa.net/sonst/wie_gross.html

                Also, bei mir verhalten sich beide absolut identisch.
                Bei Dir?  Bei anderen?

                BTW: Irgendwann sollte ich vielleicht mal anfangen, diese Fix-Mal-Probier-Scripts, die ich hier immer so stricke, zu ordnen und zusammenzustellen. :-)

                Christine

                1. hi Christine,
                  supernett, danke Dir fuer die Muehe, das funktioniert allerdings :-)

                  BTW: Irgendwann sollte ich vielleicht mal anfangen, diese Fix-Mal-Probier-Scripts, die ich hier immer so stricke, zu ordnen und zusammenzustellen. :-)

                  Mach das bitte :-)) Ich habe neulich schon mal was von Dir gelesen, das Katz und Maus Spiel mit sproeden Gifs und JavaScript, sehr lehrreich!

                  Gruss Joachim

                  1. Hallo Christine,
                    noch eine Rueckfrage, falls es Dich nicht nervt.
                    Du hast jetzt die Abfrage ueber:

                    window.onresize=zeigen;

                    aufgerufen. Ich hatte urspruenglich in den Body-Tag onResize="zeigen()" reingeschrieben, funktioniert es so also tatsaechlich nicht? (onload="zeigen()" dagegen funktioniert beim Laden)
                    Und warum muessen die () bei window.onresize=zeigen; weggelassen werden?
                    Das waren eigentlich schon 2 Fragen...

                    Gruss Joachim

                    1. Hallo,

                      Du hast jetzt die Abfrage ueber:
                      window.onresize=zeigen;

                      Zuerst mal kleine Korrektur: das ist keine Abfrage.
                      Hier wird festgelegt, was bei Eintreten eines bestimmten Ereignisses passieren soll.

                      aufgerufen. Ich hatte urspruenglich in den Body-Tag onResize="zeigen()" reingeschrieben, funktioniert es so also tatsaechlich nicht?

                      Doch, das ist dasselbe.

                      Und warum muessen die () bei window.onresize=zeigen; weggelassen werden?

                      Darf ich mir das einfach machen?
                      Wieder mal auszugsweise Zitat Doku:
                           Calling Event Handlers Explicitly
                           In JavaScript 1.1 and later releases, you can reset an event handler specified by HTML,
                           as shown in the following example.
                          <SCRIPT LANGUAGE="JavaScript">
                            ...
                          function fun2() {
                             ...
                          }
                          </SCRIPT>

                      ...
                          <SCRIPT>
                          document.myForm.myButton.onclick=fun2
                          </SCRIPT>
                          Note that event handlers are function references, so you must assign fun2 itself, not fun2()
                          ...
                      Vollstaendig nachzulesen in "Client-Side JavaScript Guide 1.3" http://developer.netscape.com/docs/manuals/js/client/jsguide/index.htm
                      unter "10. Handling Events".

                      Vielleicht noch was, damit die Sache mit den Klammern klarer wird.
                      Das ist anlaog zum Definieren einer Methode fuer ein Objekt, etwa so:
                         function die_Methode()
                         {
                            ...
                         }
                         function mach_Objekt()
                         {
                             this.Methode = die_Methode;
                         }
                         mein_Objekt = new mach_Objekt();

                      Christine

                      1. hallo Christine,
                        danke fuer die Erklaerung, ist natuerlich schwere Kost fuer Nichtprogrammierer ;-)

                        Gruss Joachim

                  2. BTW: Irgendwann sollte ich vielleicht mal anfangen, diese Fix-Mal-Probier-Scripts, die ich hier immer so stricke, zu ordnen und zusammenzustellen. :-)

                    Mach das bitte :-)) Ich habe neulich schon mal was von Dir gelesen, das Katz und Maus Spiel mit sproeden Gifs und JavaScript, sehr lehrreich!

                    Hm, das habe ich allerdings nicht damit gemeint, die "sproeden GIFs" sind richtig ausgearbeitet und ordentlicher Bestandteil der JavaScript-Notizen, zu finden unter "Tips und Tricks".
                    Das Ding von gestern (und andere auch) sind halt nur mal eben probierte Sachen ohne Erlaeuterung. Die meinte ich, sind naemlich noch ein paar mehr davon da. :-)

                    Christine