Bernd Euler: window-größe

hallo liebes forum,

mit einem problem komme ich einfach nicht zu rande und habe auch keine ausreichende antwort auf meine anfrage vor ca. einer woche bekommen. deshalb nochmal ein zögerlicher versuch:

ich möchte beim befehl window.open abfragen welches betriebssystem benutzt wird und danach die fenstergröße bestimmen, weil windows und mac verschieden reagieren und ich dann entweder einen weißen rand erhalte oder das bild abgeschnitten wird. wie ich die plattform abfrage wurde mir schon beantwortet, nur wo ich das einbetten kann und vor allem, wie ich das bei einer bestehenden seite mit unzähligen verschiedenen fenstern am einfachsten mache, bekomme ich leider nicht heraus. geht das per css? so generell: wenn windows dann resizeby -16, oder so ähnlich?

würde mich über hilfe sehr freuen,
gruß
bernd

  1. Hi,

    ich möchte beim befehl window.open abfragen welches betriebssystem benutzt wird und danach die fenstergröße bestimmen

    hmm, dann musst aber auch zwischen Browsern unterscheiden, denn auch da gibts Unterschiede. Das wird eine muehsame Angelegenheit.

    Mal als Bsp.: Mac:
    // mac identifizieren
    var mac  =  !!(navigator.userAgent.indexOf("Mac")!=-1);

    function pop(url,wd,ht) {
        wd =  mac? wd -5 : wd; // Korrekturwert width  -5
        ht =  mac? ht -5 : ht; // Korrekturwert height -5
        test = open(url,"","width=" +wd+ ",height=" +ht);
    }

    das Ganze kannst Du natuerlich in ein externes Script auslagern.

    Gruesse  Joachim

  2. Hallo Bernd,

    ich möchte beim befehl window.open abfragen welches betriebssystem benutzt wird und danach die fenstergröße bestimmen, weil windows und mac verschieden reagieren und ich dann entweder einen weißen rand erhalte oder das bild abgeschnitten wird.

    Hmm, den weißen Rand finde ich nicht so störend, und für den anderen Fall kann ich entweder die Fenstergröße ändern (das lässt du doch zu?) oder ich habe Scrollbars.

    wie ich die plattform abfrage wurde mir schon beantwortet, nur wo ich das einbetten kann

    Was hast du denn schon ausprobiert?

    und vor allem, wie ich das bei einer bestehenden seite mit unzähligen verschiedenen fenstern am einfachsten mache

    An wieviel Stellen werden denn Fenster (PopUps) geöffnet? Du könntest die Funktion window.open überschreiben und musst dann nur an einer Stelle deine Betriebssystemabfrage implementieren.

    geht das per css?

    Nein

    wenn windows dann resizeby -16, oder so ähnlich?

    Eher "ähnlich". Wo *genau* klemmt es denn jetzt?

    Grüße,

    Maxx

    1. hallo maxx,

      Hmm, den weißen Rand finde ich nicht so störend, und für den anderen Fall kann ich entweder die Fenstergröße ändern (das lässt du doch zu?) oder ich habe Scrollbars.

      nein. das lasse ich nicht zu. auch keine scroll-bars. das ganze funktioniert wie eine dia-show, indem man ins bild klickt, gehts zum nächsten bild. im hauptfenster steht der erklärende text. im pop-up ist die bebilderung. deshalb finde ich den weissen rand auch störend.

      An wieviel Stellen werden denn Fenster (PopUps) geöffnet? Du könntest die Funktion window.open überschreiben und musst dann nur an einer Stelle deine Betriebssystemabfrage implementieren.

      sicherlich 30 verschiedene stellen.
      genau da haperts mit meinem verständnis. wie kann ich auf diese eine stelle verweisen? und wo kann die liegen?

      Eher "ähnlich". Wo *genau* klemmt es denn jetzt?

      siehe oben. ich raff das nicht.

      gruß
      bernd

      1. Hi Bernd

        das ganze funktioniert wie eine dia-show, indem man ins bild klickt, gehts zum nächsten bild. im hauptfenster steht der erklärende text. im pop-up ist die bebilderung. deshalb finde ich den weissen rand auch störend.

        OK, das Ganze scheint sich doch etwas schwieriger zu gestalten. Was hast du denn bereits? Kann man sich etwas online ansehen?

        Woher weiß das Bild (im PopUp) welches das nächste ist? Sind die Bilder alle gleich groß? Kann man nicht zurückblättern? Wo kommt der erklärende Text her? Ist das richtig das selbiger im Hauptfenster steht?

        An wieviel Stellen werden denn Fenster (PopUps) geöffnet?
        sicherlich 30 verschiedene stellen.

        Sind das 30 Diashows? oder eine mit 30 Bildern? Wie sehen die Links aus? Hast du etwas in der Art: <a href="bild.jpg" onClick="ZeigeBild('bild.jpg'); return false;">Zum Bild</a>
        Wenn nicht wäre es zu überlegen dieses in deinen Dateien statt dem "<a>wasauchimmer</a>" einzufügen. Was die Funktion ZeigeBild('...) macht klären wir dann im nächsten Post. OK?

        Eher "ähnlich". Wo *genau* klemmt es denn jetzt?
        siehe oben. ich raff das nicht.

        Tja, krempel die Ärmel hoch und versuche mal einen Anfang. So leid es mir tut Bernd ... aber ich kann dir keine konkrete Antwort geben.

        Maxx

        P.S. http://www.maxx4u.de/pot/frameset.html ist nicht die übliche Art der Präsentation ... vielleicht kannst du etwas daraus ableiten?

        1. hallo maxx

          OK, das Ganze scheint sich doch etwas schwieriger zu gestalten. Was hast du denn bereits? Kann man sich etwas online ansehen?

          meine domain ist www.szpilman.de. das ist sozusagen meine mappe im netz (künstler, halt). besonders viel desgleichen ist auf der seite http://www.szpilman.de/new-tat.html zu sehen. alle anderen projekte haben aber eigentlich das gleiche system.

          Woher weiß das Bild (im PopUp) welches das nächste ist? Sind die Bilder alle gleich groß? Kann man nicht zurückblättern? Wo kommt der erklärende Text her? Ist das richtig das selbiger im Hauptfenster steht?

          die bilder sind jeweils eine html-seite und dadurch miteinander verlinkt. die bilder sind pro fenster immer gleich groß.

          P.S. http://www.maxx4u.de/pot/frameset.html ist nicht die übliche Art der Präsentation ... vielleicht kannst du etwas daraus ableiten?

          schaue ich mir gleich mal an. vielen dank dir schon mal.

          gruß
          bernd

          1. Hi Bernd,

            http://www.szpilman.de/new-tat.html
            das ganze funktioniert wie eine dia-show

            Hmmm, bist du sicher? Ich klicke ein bild an und sehe ein PopUp. Aber ist es auch das angeklickte Bild? Oder ist das Teil der künstlerischen Freiheit?

            Woher weiß das Bild (im PopUp) welches das nächste ist?
            indem man ins bild klickt, gehts zum nächsten bild.

            geht es zu "einem" Bild. Aber ist es das nächste?
            Deine Bilder sind "hart" verdrahtet. Von PopUp zu PopUp. Das kann man zwar so machen, es ist aber nicht sinnvoll wenn du öfters Änderungen an deinen Bildern vornimmst.

            im hauptfenster steht der erklärende text.

            Vielleicht bin auch nur zu müde ... wo steht der Text?

            Ähm, tja ... ich helfe dir ja gerne. Es ist vermutlich einfach zu spät ... sorry *gähn*

            Gute Nacht

            Maxx

            1. Guten Morgen Bernd,

              auauau ... ich habe Kopfweh. Ich hätte gestern nicht so viel Wein trinken sollen. Ich kann mich gar nicht erinnern gestern hier gepostet zu haben? Und das um 23:23? War ich das?

              Gucken wir uns erst mal die Links auf der Hauptseite an:
              <a href="javascript:;"
                   schön ist das nicht. Hier sollte href=".../bild.jpg" stehen.
                   Dann haben auch Besucher ohne javascript etwas davon.

              onClick="MM_openBrWindow('01/new-tat/all.nta/01.all.nta.html',
                   Hier wird die Funktion "MM_openBrWindow" aufgerufen.
                   Gucken wir später an.

              'allnta',
                   Der Name des Fenster das geöffnet wird. Du hast jedem
                   Fenster einen anderen Namen gegeben - Dadurch wird immer ein
                   *neues* geöffnet, statt das alte zu recyclen. Ist das Absicht?

              'width=434,height=322,left=80,top=140')">
                   Breite, Höhe und x, y Position des Fensters. Hier wollen wir ändern.

              <img src="bilder/b.all.nta.jpg" width="150" height="113" border="0">
              </a>

              Entscheidend für das Öffnen, und die Größe des Fensters ist die Funktion MM_openBrWindow. Hier musst du ansetzen. Die Funktion macht jetzt nicht anderes also mit den übergebenen Parametern die Methode window.open aufzurufen.

              function MM_openBrWindow(theURL,winName,features) {
                window.open(theURL,winName,features);

              Das ist Dreamweaver? Tja, ich habe von DW etwa soviel Ahnung wie ein Blinder von der Farbe. So etwas ist mir suspekt. Ich habe da lieber die volle Kontrolle. Schaffst du es die Funktion zu ändern? Es ist kein Problem aus dem übergebenen Parameter "features" (Dahinter verbirgt sich ja: 'width=434,height=322,left=80,top=140') die 434 und die 322 zu extrahieren, entsprechend des verwendeten Browsers bzw. Betriebssystems zu modifizieren und das Fenster in einer anderen (richtigen?) Größe zu öffen.

              Bist du soweit?

              Um die einzelnen Zahlen aus dem String herauszulesen helfen uns die Methoden search() und parseInt().
              Zuerst suchen wir nach der Zeichenkette "width=" denn das was unmittelbar dahinter steht wollen wir ja rausfinden:

              breite=features.search(/width=/);

              search liefert uns das erste auftreten der Zeichenkette. In unserem Fall also die Position des "w" wenn wir jetzt noch die Länge von "width=" addieren (6 Zeichen) müssten wir genau auf der ersten Zahl stehen. Das und den Rest wandeln wir jetzt in einen Integer um. Wir wollen ja später noch addieren oder subtrahieren.

              breite=parseInt(features.substr(breite+6,3));

              Analog musst du mit der Höhe (height=) verfahren. Dann änderst du breite und hoehe je nach verwendetem Betriebssystem (Wie genau, musst du wissen). Bastelst den String wieder zusammen ....

              features="width="+breite+",height="+hoehe+",left=80,top=140";

              Tja, das war es dann auch. Viel Spaß dabei.

              Maxx *geht sich ein Aspirin holen*

              --
              Einstein ist tot, Goethe ist tot ...
              Und mir geht es heute auch nicht besonders gut.
              1. Guten Morgen Maxx,

                hoffentlich war der wein nicht nötig, um die blöde fragerei auszuhalten.

                bin auch erst aufgestanden. war bei mir auch spät.

                ja das ist dreamweaver. mir reichts so. auch wenn ich es lieber besser im griff hätte.

                das mit den verschiedenen namen der pop-ups ist übrigens wirklich absicht. es sollen auch mehrere pop-ups gleichzeitig offen sein.

                ich glaube ich habs verstanden wie es läuft. aber: kann ich das nicht irgendwie zentral klären? also an einer stelle in der domain. deshalb hatte ich ja an css gedacht. oder muß ich das jetzt bei jedem parent-fenster so machen?

                gute besserung
                gruß bernd

                1. Hi Bernd,

                  ich glaube ich habs verstanden wie es läuft.

                  :-)) Prima

                  aber: kann ich das nicht irgendwie zentral klären? also an einer stelle in der domain.

                  Kein Problem. Du musst die Methode window.open überschreiben. Dazu musst du allerdings in *jede* deiner Dateien (die PopUps öffnen) ein javascript includieren:

                  <script language="JavaScript" src="myopen.js" type="text/javascript"></script>

                  In myopen.js steht dann etwas wie:
                  -----------
                  wopen=window.open;          // die Methode merken. Wir brauchen sie ja noch
                  window.open=MyWindowOpen;   // window.open überschreiben.

                  // Ab jetzt kommt jedes window.open zuerst bei unserer Methode MyWindowOpen an. Alles klar?

                  function MyWindowOpen(theURL,winName,features)
                    {
                    ... Hier den ganzen Mist wie beschrieben ...

                  wopen(theURL,winName,features); // Methode window.open aufrufen
                    }
                  -----------

                  Dann hast du eine zentrale Stelle. Gut so?

                  deshalb hatte ich ja an css gedacht.

                  Ne, css kann das nicht.

                  Viel Spaß,

                  Maxx