Thomas Mell: Abfrage welches Fenster den Focus besitzt

Hi Leute,
gibt es eine Möglichkeit festzustellen welches von mehreren mit windows.open(blablub) geöffneten Fenstern momentan im Vordergrund steht, bzw. den Focus besitzt?
Mir reicht eine Lösung für den IE5.
Vielen dank schon mal.
Thoma

  1. Hi,

    gibt es eine Möglichkeit festzustellen welches von mehreren mit
    windows.open(blablub) geöffneten Fenstern momentan im Vordergrund
    steht, bzw. den Focus besitzt?

    naja, so direkt nicht - aber über nen Umweg ,)

    Wenn du mit window.open() ein Fenster öffnest, geh ich mal davon
    aus, daß du ein "Haupt"-Fenster hast. OK, in dem definierst du
    eine Variable

    fo = "hauptfenster_name";

    In den anderen Fenstern jeweils einen Event-Handler im <body>-Tag:

    onfocus="selffocus();"

    Die Fkt "selffocus":

    function selffocus()
    {
    parent.fenstername.fo = "fenstername";
    }

    Die Abfrage dann per

    alert(parent.hauptfenstername.fo);

    Mir reicht eine Lösung für den IE5.

    Bäh, immer diese nur-IEler - es ist doch viel lustiger, das
    für beide Browser zu machen.
    Die Lösung GEHT überigens in beiden Browsern ,)

    mfg
    CK1

    1. Hi Christian!

      naja, so direkt nicht - aber über nen Umweg ,)

      naja ich glaube das ist nicht ganz was thomas sucht ... er hat zwar leider nicht geschrieben was er genau machen will - aber ich glaube ich kann ihm eine erweiterte loesung mit dem selben prinzip vorschlagen:

      also das fenster meldet das einen focus hat - schon mal nicht schlecht - aber was ist wenn der inhalt des fensters eine fremde seite hat - bin mir jetzt nicht sicher ob das mit der hta auf fremde domains zugreifen auch ueber fenster hinweg geht ... daher ist das mal nur eine annahme und die loesung hilft auch nur wenn du alle fenster die du abfragen willst kennst - wenn das nicht der fall ist und du ueberhaupt wissen willst welches programmfenster den focus hat werde ich mal etwas mit den activeX schnittstellen spielen (wiedermal ;-)

      also der erweiterte vorschlag:
      nachdem du das fenster geoeffnent hast haengst du mit attachEvent am body im fenster ein onunload und ein onfocus dran (wie gesagt nicht sicher das das ueber den fenster hinweggeht... - in frames ja kein prob)

      das onunload meldet dir wenn das fenster geschlossen wird oder eine andere seite aufgerufen wird - du kannst nach einen kleinen timeout pruefen ob das fenster noch da ist und dann wenn die seite vollstaendig geladen ist wieder die zwei events dranhaengen.

      aber wie gesagt ich habe keine ahnung was du bezecken willst.

      Mir reicht eine Lösung für den IE5.

      Bäh, immer diese nur-IEler - es ist doch viel lustiger, das
      für beide Browser zu machen.

      christian - das ist zu 99% fuern SB weil der thomas programmiert jetzt schon seit einer ganzen weile sehr fleisig am neuen SELFHTML Browser - darum braucht er es nur fuern 5er - zu Bio: du haettest diesen fakt wissen koennen <fg/>

      CU Roman

      1. Hi Roman, hast du mein Mail bekommen ?

        naja ich glaube das ist nicht ganz was thomas sucht

        Genau, ich hatte keinen Bock einen Roman zu schreiben *g*, also hole ich es nach...
        Es geht um die Postingfenster die der Selfbrowser oeffnet. Im Grunde moechte ich nur ne Funktion einbauen welche die Groesse des zuletzt geschlossenen Fensters speichert um beim naechsten Oeffnen eines Posting das neue Fenster auf die selbe Groesse zu setzen (wie es normalerweis Windoof macht, geht aber nicht bei Open). Dafuer muss ich aber wissen welches Fenster zum Zeitpunkt des Schliessens den Focus besass um schon zuvor die Groesse zu speichern (wenn es schon geschlossen ist, geht wohl schlecht *g*). Wenn mir das Fenster bekannt ist, ist es kein Problem die Groesse und Position abzufragen. Ich bekomme zwar nur die Werte fuer den sichtbaren Bereich im Fenster, da aber die Menue und Statuszeilen eine feste Groesse besitzen kann man leicht auf die Aussenmasse hochrechnen.

        also der erweiterte vorschlag:
        nachdem du das fenster geoeffnent hast haengst du mit attachEvent am body im fenster ein onunload und ein onfocus dran (wie gesagt nicht sicher das das ueber den fenster hinweggeht... - in frames ja kein prob)

        Wie soll ich das machen ? Dann muss ich fuer jedes Fenster einen eigenen <script FOR=....> anlegen. Das koennte man zwar in einem unsichtbaren Iframe erledigen (dynamisch reinschreiben), ist aber ne sch... Loesung. Oder geht es auch anders ?

        Du kannst ja mal nachsehen ob es dafuer ne AktiveX-Loesung gibt, und wenn du schon dabei bist, dann schau doch bitte gleich mal nach ob man den "Abbrechen" - Button simmulieren kann und ob es moeglich ist "von Hinten" die Statuszeile auszulesen (das Prob. kennst du ja...)

        zu Bio: du haettest diesen fakt wissen koennen <fg/>
        haha, Bio gehoert doch zur aussterbenden Rasse der NN-Freunde (aus mir unbegreiflichen Gruenden, mal abgesehen vom M$ Hass). Mal sehen, momentan hat der NN noch 17% Anteil, wenn der 6er rauskommt wird dieser wohl bei ca 0% liegen *lol*. Im gleichen Masse wie Bio`s Liste waechst, schrumpft der Marktanteil des NN *fg*

        viele Gruesse an alle
        Thomas

        1. Hi Roman, hast du mein Mail bekommen ?

          Hi Thomas!
          ja habe ich - und noch genau 78 andere (heute war eine flaute ;-)

          auch deine andere mail liegt noch in der todoliste mit 63 anderen - ich hoffe ich komme morgen dazu - obwohl... - ich werde mich zusammenreissen.

          naja ich glaube das ist nicht ganz was thomas sucht
          Genau, ich hatte keinen Bock einen Roman zu schreiben *g*, also hole ich es nach...

          ja du weisst was waere ich ohne roman? waere ich noch ich - waere ich ueberhaupt und was ist der unterschied zwischen romans.

          ok zurueck zum thema - wozu brauchst du ein <script for=..>? IMHO ist die loesung ganz einfach:

          wir lesen das posting mithilfe des scripts von frank aus und muessen dann sowieso den eingesparten html-source in das neue fenster uebertragen (dabei kann man auch gleich die felder ausfuellen und muss nicth wie bisher warten... :( - im body geben wir ein onUnLoad rein, welches beim schliessen dann die groesse des fenstes zurueckgibt - soweit sogut.

          wenn jetzt aber jemand einen weiterfuehrenden link folgen wuerde, dann wuerde das event feuern und das obwohl es ja nicht geschlossen wird - deshalb schlage ich ein 0px frame vor wo die datei das onunload enthaelt und die lokal abgelegt ist - da koennen wir auch die scripts ablegen die wir brauchen um das posting aus den daten der pl generieren muessen - damit brauchen wir auch kaum mehr austausch von daten zwischen sb und postingfenster - nur die nummer uebergeben des postings und wenn es geschlossen wir schickt es die derzeitige groesse zurueck.

          verstanden was ich meine?

          Du kannst ja mal nachsehen ob es dafuer ne AktiveX-Loesung gibt, und wenn du schon dabei bist, dann schau doch bitte gleich mal nach ob man den "Abbrechen" - Button simmulieren kann und ob es moeglich ist "von Hinten" die Statuszeile auszulesen (das Prob. kennst du ja...)

          brauchst du jetzt noch das activeX fuer die fenster?

          das mit dem statuszeile auslesen - das sieht schlecht aus ... habe mir schon mehrmals die zaehne daran vergebens ausgebissen

          besteht das problem immer noch?

          haha, Bio gehoert doch zur aussterbenden Rasse der NN-Freunde (aus mir unbegreiflichen Gruenden, mal abgesehen vom M$ Hass). Mal sehen, momentan hat der NN noch 17% Anteil, wenn der 6er rauskommt wird dieser wohl bei ca 0% liegen *lol*. Im gleichen Masse wie Bio`s Liste waechst, schrumpft der Marktanteil des NN *fg*

          <rolf/>

          Thomas - die bilder mache ich... Mo. und Di. vormittag habe ich etwas zeit.

          CU Roman

          1. Uhu,

            wir lesen das posting mithilfe des scripts von frank aus ....

            Den Script koennen wir so nicht benutzen, da nur der Postingtext aber nicht die Zusatzdaten uebertragen werden.

            deshalb schlage ich ein 0px frame vor wo die datei das onunload enthaelt und die lokal abgelegt ist ....

            Das habe ich schon probiert, funzt aber nicht. Das Problem ist mal wieder die Sicherheitsmeldung. Man kann nicht ueber opener auf die HTA zugreifen, was auch richtig ist. Sonst haette ja jeder Zugriff auf das System.

            brauchst du jetzt noch das activeX fuer die fenster?

            Waehre nicht schlecht wenn das klappen wuerde. Das komprimierte Uebertragen der Postings werde ich erst in der uebernaechsten Version einbauen, jetzt moechte ich erst mal mit dem SB3.0 fertig werden.

            das mit dem statuszeile auslesen - das sieht schlecht aus ... habe mir schon mehrmals die zaehne daran vergebens ausgebissen

            besteht das problem immer noch?

            Ja, wie immer machen die "fremden" Seiten Probleme und die Sache mit dem Error-Objekt hat nie so richtig gefunzt.

            vieleicht findest du ja noch was...
            cucu
            Thomas

            1. Hi Thomas!

              wir lesen das posting mithilfe des scripts von frank aus ....
              Den Script koennen wir so nicht benutzen, da nur der Postingtext aber nicht die Zusatzdaten uebertragen werden.

              hattest du nicht gesagt du hast es schon umgeschrieben oder zumin. angefangen?

              Das habe ich schon probiert, funzt aber nicht. Das Problem ist mal wieder die Sicherheitsmeldung. Man kann nicht ueber opener auf die HTA zugreifen, was auch richtig ist. Sonst haette ja jeder Zugriff auf das System.

              hmmm ... ja sh*t :( du hast recht <gruebel/> in ein file koennen wir auch nichts schreiben....

              mal ein ganz anderer ansatz - ist zwar bei weiten nicht so gut wie dein ansatz - mir faellt dazu aber im moment nichts ein (werde mal ein wenig bei den activeX-objekten rummachen): die hoehe, breite, top und left position ueber die optionen veraender bar machen - wie oft muss man denn ein fenster anpassen?

              brauchst du jetzt noch das activeX fuer die fenster?
              Waehre nicht schlecht wenn das klappen wuerde. Das komprimierte Uebertragen der Postings werde ich erst in der uebernaechsten Version einbauen, jetzt moechte ich erst mal mit dem SB3.0 fertig werden.

              ok - aber diesmal sollten wir eine ausfuehrliche betaphase machen - ich schick sie dann an meine leute - hat sich doch verdammt viel geaendert und es gehoert alles durchgetestet!

              Ja, wie immer machen die "fremden" Seiten Probleme und die Sache mit dem Error-Objekt hat nie so richtig gefunzt.

              schade irgendwie war sie so genial simple die idee :( - vielleicht faellt mir ja sonst noch was ein...

              vieleicht findest du ja noch was...

              werde mein bestes geben

              CU Roman

              1. Hi Roman,

                hattest du nicht gesagt du hast es schon umgeschrieben oder zumin. angefangen?

                nene, das war das Komprimierungs-Script...

                mal ein ganz anderer ansatz - ist zwar bei weiten nicht so gut wie dein ansatz - mir faellt dazu aber im moment nichts ein (werde mal ein wenig bei den activeX-objekten rummachen): die hoehe, breite, top und left position ueber die optionen veraender bar machen - wie oft muss man denn ein fenster anpassen?

                Es soll beim oeffnen die gleiche Groesse bekommen wie das letzte Fenster beim schliessen hatte - eben genau so wie es in Windows ueblich ist.

                ok - aber diesmal sollten wir eine ausfuehrliche betaphase machen - ich schick sie dann an meine leute - hat sich doch verdammt viel geaendert und es gehoert alles durchgetestet!

                Yes Sir, es hat sich nicht viel geaendet, sondern alles *g*, ueber 100KB Javascript kpl. neu geschrieben *schwitz*

                Ja, wie immer machen die "fremden" Seiten Probleme und die Sache mit dem Error-Objekt hat nie so richtig gefunzt.

                schade irgendwie war sie so genial simple die idee :( - vielleicht faellt mir ja sonst noch was ein...

                Wenn ich es mir nochmal genau ueberlege werde ich es nochmal mit dem Error-Objekt probieren. Seinerzeit hatten wir damit die Daten fuer die Stauszeile uebergeben, das haben wir jetzt nicht mehr. Damals hat es bestimmt Probleme gemacht weil wir es mit hunderten Errors zu tun hatten, jetzt brauchen wir sie nur noch fuer die "fremden" Seiten, wenn es da mal klemmen sollte waehre es nicht so schlimm. Ausserdem hatten wir das Problem in "fremde" Seiten nachtraeglich JS einzufuegen (das ging dann doch irgendwie) und zu starten (das ging ueberhaupt nicht). Dafuer habe ich Heute aber auch ne Loesung gefunden.
                Das schoene am IE ist, dass das <img> Tag den Event "onload" kennt. Also einfach mit insertAdjacentHTML() ein mit Style unsichtbar gemachtes Bild direkt hinter das Body-Tag irgendeiner Seite schreiben und in den Event den gesammten JS unterbringen.

                dollesDing = '<img src"Bildpfad" style="display:none" onload="jedeMengeJavascript">';
                IframeMitFremderSeite.getElementsByTagName('BODY')[0].insertAdjacentHTML("AfterBegin", dollesDing);
                  
                Somit fuegen wir den JS ein und starten ihn auch gleich, und das Bild missbrauchen wir dann auch gleich um die Errors zu erzeugen. Jetzt muss es nur noch funzen *g* (werde ich morgen mal testen).
                Probleme sehe ich allerding bei Framesets, dann muss es in jeder Frameseite eingefuegt werden - und bei verschachtelten Frames ? Hmmm, das kann man bestimmt Rekursiv machen, mal sehen...aber nicht in dieser Version.
                Eine Alternative haette ich noch. Man kann beim IE bei einem mit Open geoeffnetes Fenster den gesammten Kopfbereich (auch die Titelleiste) abschalten. Es wuerde dann nur noch der Rahmen und die Statuszeile vorhanden sein, und dies koennte man als Ersatz fuer das Iframe benutzen. Allerdings haben wir dann immer 2 geoeffnete Fenster. Wuerde funzen, gefaellt mir aber nicht.
                So, jetzt geht es in die Heia.
                cucu
                Thomas

  2. Sup!

    Mir reicht eine Lösung für den IE5.

    Aaa - Ooh!

    Schon wieder jemand auf meiner "Liste"...

    Gruesse,

    Bio