Bernd Euler: popup direkt ansprechen

hallo forum,
ich habe die folgenden scripts im head:

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

function popupkleiner()
{
  if(navigator.appVersion.indexOf("Win") != -1)
  {
    window.resizeBy(-16,-16);
  }
}

und dann im body:

href="#" onClick="MM_openBrWindow('fenster1.html','fenster1','width=368,height=289'); popupkleiner()">

(ja das ist teilweise dreamweaver, tut mir leid.)

wie schaffe ich es nun das script popupkleiner() auf das popup zu beziehen und nicht, wie es bei mir immer nur passiert, auf den opener? es gibt viele popup-fenster mit verschiedenen namen, die je einzeln angesprochen werden müssen. und zwar immer direkt nach dem öffnen. geht das eventuell auch in einem script? vielen dank schon mal.

bernd

  1. hi,

    es gibt viele popup-fenster mit verschiedenen namen, die je einzeln angesprochen werden müssen.
    dazu brauchst du logischerweise eine referenz auf das jeweilige fenster.

    var popup1 = windo.open(...);

    window.open gibt eine referenz auf das von ihm geöffnete fenster zurück, die du in einer variable ablegen und nachher über diese ansprechen kannst.

    tipp: da du sagst, dass du viele solcher popups hast, empfiehlt sich hier eventuell ein array zum ablegen der referenzen.

    gruss,
    wahsaga

    1. var popup1 = windo.open(...);

      heißt das, daß ich das script im head so ändere? wohin kommt dann die variable bei popupkleiner()? was passiert, wenn ich mit einem a href 2 popups öffne?

      tipp: da du sagst, dass du viele solcher popups hast, empfiehlt sich hier eventuell ein array zum ablegen der referenzen.

      »»
      ich glaube nicht. zumindest nach dem was ich gerade schnell nachgelesen habe. habe array noch nir benutzt. sind schon verschiedene links.
      gruß
      bernd

      1. hi,

        var popup1 = windo.open(...);
        heißt das, daß ich das script im head so ändere?

        die funktion, die das fenster öffnet.

        wohin kommt dann die variable bei popupkleiner()?

        dort wendest du resizeTo() nicht auf window, sondern auf die in popup1 gespeicherte referenz an.

        was passiert, wenn ich mit einem a href 2 popups öffne?

        dann brauchst du auch zwei verschiedene variablen, und natürlich für jedes weitere popup jeweils eine. deshalb ja auch mein tipp mit dem array ...

        gruss,
        wahsaga

        1. hallo

          die funktion, die das fenster öffnet.

          dort wendest du resizeTo() nicht auf window, sondern auf die in popup1 gespeicherte referenz an.

          das alles habe ich probiert. trotzdem ändert das hauptfenster seine größe. liegt das daran, daß ich im body die funktionen folgendermaßen versuche aufzurufen: href="#" onClick="MM_openBrWindow('clients.adidas.html','adidas','width=368,height=289'); popupkleiner()">
          also sozusagen gleichzeitig das fenster öffne und die größe verändere?

          dann brauchst du auch zwei verschiedene variablen, und natürlich für jedes weitere popup jeweils eine. deshalb ja auch mein tipp mit dem array ...

          arrays check ich noch nicht. ich beschäftige mich mal damit.

          gruß B.

          1. hi,

            das alles habe ich probiert. trotzdem ändert das hauptfenster seine größe. liegt das daran, daß ich im body die funktionen folgendermaßen versuche aufzurufen: href="#" onClick="MM_openBrWindow('clients.adidas.html','adidas','width=368,height=289'); popupkleiner()">
            also sozusagen gleichzeitig das fenster öffne und die größe verändere?

            sollte funktionieren.
            du musst nur darauf achten, dass du die varable für die fenster-referenz erstmalig ausserhalb der funktionen deklarierst, damit sie global ist.

            arrays check ich noch nicht. ich beschäftige mich mal damit.

            die sind hierbei aber äusserst nützlich.

            andernfalls musst du für jedes einzelne popup eine eigene variable deklarieren (und diese jeweils an beide funktionen als parameter übergeben).

            gruss,
            wahsaga

            1. hallo

              sollte funktionieren.
              du musst nur darauf achten, dass du die varable für die fenster-referenz erstmalig ausserhalb der funktionen deklarierst, damit sie global ist.

              es tut mir leid. funktioniert aber nicht. wäre ganz toll, wenn du das noch mal schritt für schritt erklären würdest. meine fähigkeiten reichen leider nicht aus.

              gruß B.

              1. hi,

                es tut mir leid. funktioniert aber nicht. wäre ganz toll, wenn du das noch mal schritt für schritt erklären würdest. meine fähigkeiten reichen leider nicht aus.

                var popup1;

                function MM_openBrWindow(ReferenzVar, theURL,winName,features) { //v2.0
                  ReferenzVar = window.open(theURL,winName,features);
                )

                function popupkleiner(ReferenzVar)
                {
                  if(navigator.appVersion.indexOf("Win") != -1)
                  {
                    ReferenVar.resizeBy(-16,-16);
                  }
                }

                und dann im entsprechenden link:
                <a href="fenster1.html" target="_blank" onClick="MM_openBrWindow(popup1, 'fenster1.html','fenster1','width=368,height=289'); popupkleiner(popup1);">

                so in etwa sollte das funktionieren; ist jetzt aber ungetestet.

                für jedes weitere popup brauchst du natürlich eine weitere referenzvariable, also popup2, popup3, etc.
                achte darauf, dass du diese auch alle initialisiert, siehe oben am anfang des scriptes.

                wenn es so immer noch "nicht funktioniert", dann bringe bitte möglichst exakte fehlerbeschreibungen und originale fehlermeldungen deines browsers.

                gruss,
                wahsaga

                1. hallo

                  wenn es so immer noch "nicht funktioniert", dann bringe bitte möglichst exakte fehlerbeschreibungen und originale fehlermeldungen deines browsers.

                  ich habe wirklich die ganze zeit rumprobiert und kann es selber nicht glauben, aber es funktioniert nicht. verzweifelt. es kann ja gar nicht sein, daß ich das nicht hinkriege.
                  das fenster geht auf. behält aber seine größe. keine fehlermeldung. geht nur nicht.

                  habe mal einen test online unter: http://www.szpilman.de/test.html. habe für alle plattformen die gleiche größenveränderung. weiß ja nicht, was du benutzt. das bild jedenfalls müßte angecshnitten sein. sieht man an der schrift.

                  vielen dank. schon allein bisher. B.

                  1. hi,

                    ich habe wirklich die ganze zeit rumprobiert und kann es selber nicht glauben, aber es funktioniert nicht. verzweifelt. es kann ja gar nicht sein, daß ich das nicht hinkriege.
                    das fenster geht auf. behält aber seine größe. keine fehlermeldung. geht nur nicht.

                    hmm, nun ja.
                    hab das jetzt selber mal ausprobiert, auch mit deinem online gestellten beispiel - fehlermeldungen erhalte ich allerdings schon. (mir scheint, du weisst noch nicht so ganz, wo dein browser diese anzeigt? im IE z.b. das kleine gelbe dreieck unten in der statuszeile, doppelklick darauf, und du siehst die fehlermeldung ...)

                    nun ja, anyway - es scheint nicht so zu funktionieren, wie ich das gedacht hatte. schade.

                    aber du wolltest das anschliessende resizen doch sowieso bei _jedem_ popup, das du öffnest, machen, oder ...?

                    dann wäre es wohl am einfachsten, beide aufgaben in eine funktion zu packen.

                    folgenden code habe ich unter windows XP in IE6, mozilla/firebird0.6 und opera7 getestet, funktioniert, und bringt auch keine fehlermeldung:

                    <script language="JavaScript" type="text/javascript">
                    <!--
                    function popupoeffnen(theURL,winName,features) { //v2.0
                      var popup = window.open(theURL,winName,features);

                    if(navigator.appVersion.indexOf("Win") != -1)
                      {
                        popup.resizeBy(-80,-80);
                      }
                      else if(navigator.appVersion.indexOf("Mac") != -1)
                      {
                        popup.resizeBy(-80,-80);
                      }
                    }
                    //-->
                    </script>

                    aufruf dann anschliessend mit

                    <p onClick="popupoeffnen('01/new-tat/soa.ntg/01.soa.ntg.html','soap','width=460,height=345');">             
                      OPEN </p>

                    öffnet das fenster in der angegebenen grösse, und verkleinert es anschliessend sofort um 80 pixel in höhe und breite, da ich auf einem windows-system getestet habe.

                    sollte auch funktionieren, wenn du es für verschiedene popups innerhalb der gleichen seite verwendest - lediglich die erste der funktion beim aufruf übergebene variable ersetzen.

                    hilft dir das für deinen zweck jetzt weiter?

                    gruss,
                    wahsaga