Jani: Fenster wieder aktivieren

Hallo, ich suche für folgendes Problem eine Lösung: Beim Onmouseover wird ein neues kleines Fenster aufgerufen, wenn man aber auf der eigentlichen Inhaltsseite scrollt verschwindet das Fenster. Geht man nun wieder auf den Link erscheint das Fenster beim Onmouseover leider nicht wieder, das es nicht richtig geschlossen wurde und über die Taskleise wieder angeklickt werden muß. Das finde ich nicht sehr schön. Gibt es eine Möglichkeit das Fenster nach dem Scrollen oder beim erneuten Onmouseover wieder zu aktivieren ohne das es auf der Taskleiste angeklickt werden muß?

Jani

  1. Hallo, ich suche für folgendes Problem eine Lösung: Beim Onmouseover wird ein neues kleines Fenster aufgerufen, wenn man aber auf der eigentlichen Inhaltsseite scrollt verschwindet das Fenster. Geht man nun wieder auf den Link erscheint das Fenster beim Onmouseover leider nicht wieder, das es nicht richtig geschlossen wurde und über die Taskleise wieder angeklickt werden muß. Das finde ich nicht sehr schön. Gibt es eine Möglichkeit das Fenster nach dem Scrollen oder beim erneuten Onmouseover wieder zu aktivieren ohne das es auf der Taskleiste angeklickt werden muß?

    Wie wird das Fensterchen aufgerufen?
    Was heißt verschwinden?

    Du meinst es verliert den Focus. Lösung: einfach dem Fenster beim öffnen den Focus geben.

    window.open(....).focus();

    Struppi.

    1. Das neue Fenster wird über window.open aufgerufen. Ja, beim Scollen verliert es den Focus und ist deshalb nicht mehr sichtbar (wenn es sich dann wenigstens richtig schließen würde, wäre ja auch o.k.). Ich habe schon versucht beim Öffnen dem neuen Fenster den Fokus zu geben, aber in dem Moment, in dem man im ursprünglichen Browserfenster scrollt, wird trotzdem der Fokus auf das ursprüngliche Browserfenster gelegt (man wechselt ja durch das Scrollen das Fenster) und leider bleibt der Focus da auch. Gibt es trotzdem eine Möglichkeit das neue Fenster nach dem Scrollen wiederherzustellen oder dafür zu sorgen das es sich richtig schließt (dann würde es sich ja beim nächsten Onmouseover auch wieder öffnen)?

      Jani

      1. Ich hab dir doch schon die Lösung gezeigt.

        Struppi.

        1. Entschuldige, habe den Link übersehen. Aber ich bin wohl auch noch nicht ganz wach, hinter welchem Link auf der Seite verbirgt sich denn die Lösung, habe sie irgendwie nicht gefunden?

          Jani

          1. Entschuldige, habe den Link übersehen. Aber ich bin wohl auch noch nicht ganz wach, hinter welchem Link auf der Seite verbirgt sich denn die Lösung, habe sie irgendwie nicht gefunden?

            hinter keinem.

            Du musst einfach beim öffnen den focus setzten.

            Struppi.

            1. Ich habe das jetzt mal so versucht:

              <script language="JavaScript">
              function neu ()
              {
              var win = window.open("fensterinhalt2.htm", "Fenster", "width=250,height=450,left=500,top=250").focus();
              }
              </script>

              Das neue Fenster wird nach wie vor beim Scrollen in den Hintergrund gesetzt. Oder muss das focus irgendwo anders stehen?

              Jani

              1. <script language="JavaScript">

                language ist ein veraltetes Attribut und sollte nicht mehr verwendet werden. Stattdessen: type="text/javascript"

                Das neue Fenster wird nach wie vor beim Scrollen in den Hintergrund gesetzt. Oder muss das focus irgendwo anders stehen?

                Ach so du willst ein modales Fenster. Das geht ist aber unschön, da die Funktionsfähigkeit der anderen darunter leidet. Mit JS geht es nur, in dem du in dem Popup schreibst:

                <body onblur="self.focus();">

                Aber wie gesagt das ist keine sinnvolle Lösung.

                Struppi.

                1. Ist es nicht möglich über eine Funktion in bestimmten Intervallen oder so, prüfen zu lassen, ob das neue Fenster noch aktiviert ist oder nicht und es dann entweder richtig zu schließen oder wieder in den Vordergrund zu holen?

                  Jani

                  1. Ist es nicht möglich über eine Funktion in bestimmten Intervallen oder so, prüfen zu lassen, ob das neue Fenster noch aktiviert ist oder nicht und es dann entweder richtig zu schließen oder wieder in den Vordergrund zu holen?

                    Das ist möglich. http://de.selfhtml.org/javascript/objekte/window.htm#set_interval

                    aber es ist wohl ziemlich nervig, wenn du gerade scrollen willst und dann plötzlich der Focus weg ist.

                    Struppi.

                    1. Danke für den Link. Es stimmt natürlich, wenn beim Scrollen der Focus plötzlich weggeht, wäre das schon nervig. Aber vielleicht ist es ja möglich über setInterval() das neue Fenster schließen zu lassen, wenn es den Focus verloren hat, dann wäre es ja beim nächsten Onmouseover auch wieder da. Ich habe schon versucht, das irgendwie umzusetzten, aber ich weiß nicht, wie man abfragt, ob da neue Fenster noch den Focus hat oder nicht. So klappt es auf jeden Fall noch nicht.

                      function neu ()
                      {
                      win = window.open("fensterinhalt2.htm", "fenster", "width=250,height=450,left=500,top=250");
                      }

                      var aktiv = window.setInterval("focuswin()",1000);
                      var i = 0, win = 1;
                      function focuswin() {
                        if(win==1)
                        { win.focus(); win=1; }
                        else
                        { win.close(); win=2; }
                        i = i + 1;
                        if(i >= 10)
                         window.clearInterval(aktiv);

                      Jani

                      1. Danke für den Link. Es stimmt natürlich, wenn beim Scrollen der Focus plötzlich weggeht, wäre das schon nervig. Aber vielleicht ist es ja möglich über setInterval() das neue Fenster schließen zu lassen, wenn es den Focus verloren hat, dann wäre es ja beim nächsten Onmouseover auch wieder da. Ich habe schon versucht, das irgendwie umzusetzten, aber ich weiß nicht, wie man abfragt, ob da neue Fenster noch den Focus hat oder nicht. So klappt es auf jeden Fall noch nicht.

                        Irgendwie versteh ich dein Problem nach wie vor nicht.

                        Es ist beim mouseover doch wieder da, wenn du window.open(....).focus() anwendest, auch ohne es zu schliesen.

                        function neu ()
                        {
                        win = window.open("fensterinhalt2.htm", "fenster", "width=250,height=450,left=500,top=250");

                        und zwar genau hier:

                        Struppi.

                        1. Hm, vielleicht habe ich das Problem doch noch nicht deutlich genug beschrieben. Ich habe in einem Frame am Kopf der Seite 4 Links über die sich beim rüberschieben mit der Mouse jeweils ein kleines Erläuterungsfenster öffnen läßt, daß dann am rechten Rand der Inhaltsseite sichtbar ist. Das dumme ist, daß man scrollen muß, um bis ans Ende der Inhaltsseite zu kommen. Scrollt man wird das Erläuterungsfenster in den Hintergrund gesetzt. D.h. die Erläuterung ist weg. Ein erneutes schieben mit der Mouse über den Link aktiviert es jedoch nicht wieder. Es läßt sich nur wieder aktivieren, wenn man das Icon auf der Taskleiste anklickt. Das finde ich jedoch nicht sehr schön, weil man immer dazu neigt, einfach wieder über den Link zu schieben und dann kommt nichts. Wäre das Fenster jedoch nicht nur im Hintergrund, sondern richtig zu, würde es sich neu über Onmouseover aufrufen lassen. Ist das Problem jetzt deutlicher geworden?

                          Jani

                          1. Hm, vielleicht habe ich das Problem doch noch nicht deutlich genug beschrieben. Ich habe in einem Frame am Kopf der Seite 4 Links über die sich beim rüberschieben mit der Mouse jeweils ein kleines Erläuterungsfenster öffnen läßt, daß dann am rechten Rand der Inhaltsseite sichtbar ist. Das dumme ist, daß man scrollen muß, um bis ans Ende der Inhaltsseite zu kommen. Scrollt man wird das Erläuterungsfenster in den Hintergrund gesetzt. D.h. die Erläuterung ist weg. Ein erneutes schieben mit der Mouse über den Link aktiviert es jedoch nicht wieder. Es läßt sich nur wieder aktivieren, wenn man das Icon auf der Taskleiste anklickt. Das finde ich jedoch nicht sehr schön, weil man immer dazu neigt, einfach wieder über den Link zu schieben und dann kommt nichts. Wäre das Fenster jedoch nicht nur im Hintergrund, sondern richtig zu, würde es sich neu über Onmouseover aufrufen lassen. Ist das Problem jetzt deutlicher geworden?

                            Ja, und genau das sollte window.open(...).focus() tun. Wenn es das nicht tut, ist etwas bei dir nicht in Ordnung.

                            Struppi.

                            1. Nein, leider tut es das nicht. Dann muss ich wohl noch mal testen, warum es das nicht tut. Seufz!

                              Vielen Dank für Deine ausdauernde Beratung

                              1. <a href="#" onmouseover="openWin();">test</A>

                                function openWin()
                                {
                                var win = window.open('', 'fenster').focus();
                                }

                                Wichtig dabei ist, dass der Fenstername (der 2. Parameter) immer gleich ist und er darf (bzw. wollte) nicht dem Namen eines anderen Fensters entsprechen.

                                Struppi.

                                1. Genau so habe ich es auch ausprobiert und trotzdem kommt das Fenster beim Onmouseover nicht wieder in den Vordergrund. Aber ich habe jetzt bei Dr. Web eine Lösung gefunden: In den Body-tag des neuen Fensters onload="self.focus();" und das Fenster kommt beim erneuten Onmuseover wieder nach vorn. Man kann das sogar noch mit onblur="schliessen()" ergänzen und eine entsprechende Funktion hinterlegen, dann schließt es sich sofort, wenn es nicht mehr den Focus hat.

                                  Viele Grüße Jani

                                  1. Genau so habe ich es auch ausprobiert und trotzdem kommt das Fenster beim Onmouseover nicht wieder in den Vordergrund. Aber ich habe jetzt bei Dr. Web eine Lösung gefunden: In den Body-tag des neuen Fensters onload="self.focus();" und das Fenster kommt beim erneuten Onmuseover wieder nach vorn. Man kann das sogar noch mit onblur="schliessen()" ergänzen und eine entsprechende Funktion hinterlegen, dann schließt es sich sofort, wenn es nicht mehr den Focus hat.

                                    Ich hab keine Ahnung was du ausprobiert hast, hier eine Seite, wo genau der Code eingebaut ist, den ich dir zweimal gezeigt habe http://home.arcor.de/struebig/computer/javascript/exp/test/popup.html

                                    und es funktioniert einwandfrei genauso wie du es willst. Du kannst natürlich es so umständlich machen wie du willst.

                                    Struppi.

                                    1. Ich weiß nicht warum, aber jetzt geht es!!! Ich habe deine Funktion nochmal in meine Testseite kopiert und diesmal hat es auf einmal geklappt. Warum aber meine Funktion nicht wollte, konnte ich leider nicht rausfinden. Es ist absolut die gleiche Funktion. Habe nochmal alle Namen geändert, ich glaube sie hatte was gegen den Variablennamen, aber mir ist schleierhaft warum. Na wie dem auch sei, jetzt läuft es endlich und Du hast natürlich recht, so ist es einfacher!!!

                                      Nochmals vielen Dank Jani