Jürgen: window.open() Problem

Hallo,

ich hatte vor ca. 1,5 Jahren ein Script in meine Seite eingebaut das von einem popup Fenster nach 5 Sekunden auf eine andere Seite (neue Seite) weitergeleitet wird und das popup zugleich wieder schließt. Doch siehe da. Mit IE7 wird vom popup nicht mehr weitergeleitet. Das popup wird allerdings noch nach 5 Sek. geschlossen.

Hier mal das Script:

<script LANGUAGE="JavaScript">
function reload()
{
window.open("http://www.blablabla.de")
window.close()
}
setTimeout("reload();", 5000); //3 sek = 3000 millisek

</script>

Ich hoffe es kann mir jemand helfen

Vielen Dank
Jürgen

  1. Hi,

    ich hatte vor ca. 1,5 Jahren ein Script in meine Seite eingebaut das von einem popup Fenster nach 5 Sekunden auf eine andere Seite (neue Seite) weitergeleitet wird und das popup zugleich wieder schließt. Doch siehe da. Mit IE7 wird vom popup nicht mehr weitergeleitet.

    Kann es sein, dass dein Popup-Blocker etwas gegen das Oeffnen der neuen Seite hat?

    Das popup wird allerdings noch nach 5 Sek. geschlossen.

    Das wiederum duerfte dem Popup-Blocker ziemlich egal sein. ;-)

    mfG,
    steckl

    1. Hallo,
      ich glaube nicht dass es am Popup-Blocker liegt, da das Popupfenster über den Befehl windows.open() erst geöffnet wird.
      Gruß
      Jürgen

      1. Hi,

        ich glaube nicht dass es am Popup-Blocker liegt, da das Popupfenster über den Befehl windows.open() erst geöffnet wird.

        nach welcher Aktion?

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. Hi,

          ich glaube nicht dass es am Popup-Blocker liegt, da das Popupfenster über den Befehl windows.open() erst geöffnet wird.

          nach welcher Aktion?

          Cheatah

          Hi Cheatah,

          Nach einem einfachem Link in der website indem ich das Popup mit einer bestimmten Größe öffne.

          <a href="#" onclick="javascript:window.open('blablabla.php','pop3D','width=700,height=400,scrollbars=no,resizable=no');" >

          Gruß
          Jürgen

          1. Hi,

            nach welcher Aktion?
            Nach einem einfachem Link in der website indem ich das Popup mit einer bestimmten Größe öffne.
            <a href="#" onclick="javascript:window.open('blablabla.php','pop3D','width=700,height=400,scrollbars=no,resizable=no');" >

            Der Popup-Blocker blockt wohl nur Popups die automatisch geoeffnet werden. Dieses hier wird ja erst geoeffnet, wenn du auf einen Link klickst.

            mfG,
            steckl

          2. Hi,

            nach welcher Aktion?
            Nach einem einfachem Link

            steckl spricht wahr. Ein Klick (genauer: das onmouseup- und somit auch das onclick-Event) entspricht einer User-Interaktion, aufgrund derer der Browser in der Standard-Einstellung ein Popup als gewünscht annimmt und öffnet.

            Cheatah

            --
            X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
            X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes
          3. Hi,

            <a href="#" onclick="javascript:window.open('blablabla.php','pop3D','width=700,height=400,scrollbars=no,resizable=no');" >

            was soll das "javascript:" bewirken?

            Gruß
            Reiner

      2. Hi,

        ich glaube nicht dass es am Popup-Blocker liegt, da das Popupfenster über den Befehl windows.open() erst geöffnet wird.

        versuch mal folgendes:

          
        <script LANGUAGE="JavaScript">  
        function reload()  
        {  
          var fenster = window.open("http://www.blablabla.de");  
          
          if ( fenster )  
          {  
              alert('auf');  
          }  
          else  
          {  
              alert('nicht auf');  
          }  
          
          
          window.close();  
        }  
        setTimeout("reload();", 5000); //3 sek = 3000 millisek  
          
        </script>  
          
        <a href="javascript:reload()">test</a>  
        
        

        Wenn du auf den Link klickst muesste "auf" angezeigt werden.
        Wenn dein Popup-Blocker eingreift sollte "nicht auf" angezeigt werden.

        mfG,
        steckl

        1. Hi,

          ich glaube nicht dass es am Popup-Blocker liegt, da das Popupfenster über den Befehl windows.open() erst geöffnet wird.

          versuch mal folgendes:

          <script LANGUAGE="JavaScript">
          function reload()
          {
            var fenster = window.open("http://www.blablabla.de");

          if ( fenster )
            {
                alert('auf');
            }
            else
            {
                alert('nicht auf');
            }

          window.close();
          }
          setTimeout("reload();", 5000); //3 sek = 3000 millisek

          </script>

          <a href="javascript:reload()">test</a>

          
          >   
          > Wenn du auf den Link klickst muesste "auf" angezeigt werden.  
          > Wenn dein Popup-Blocker eingreift sollte "nicht auf" angezeigt werden.  
          >   
          > mfG,  
          > steckl  
            
            
          Hi steckl,  
            
          "nicht auf" Also doch der Popup-Blocker.  
            
          Gruß  
          Jürgen
          
  2. Hallo Jürgen,

    ich hatte vor ca. 1,5 Jahren ein Script in meine Seite eingebaut das von einem popup Fenster nach 5 Sekunden auf eine andere Seite (neue Seite) weitergeleitet wird und das popup zugleich wieder schließt.

    Hmm ja, sollte gehen, aber ...

    Hier mal das Script:

    ... nicht mit diesem Scriptfetzen, das diverse Fehler enthält.

    <script LANGUAGE="JavaScript">

    Bitte lieber

    <script type="text/javascript">

    function reload()
    {
    window.open("http://www.blablabla.de")

    Nette Browser erkennen Deine Absicht und öffnen ein neues Fenster, das was Du ein Popup nennst. window.open erwartet allerdings mindestens zwei Parameter. Den zweiten, den Fensternamen, läßt Du diskreterweise weg.

    window.close()

    Damit wird nicht das Popup geschlossen. Damit weist Du den Browser an, sich selbst zu schließen, das stößt möglicherweise auf Schwierigkeiten, wie Du im entsprechenden SELFHTML-Abschnitt, window.close() nachlesen kannst.

    Insbesondere im Zeitalter von Tabbed Browsing ist das Schließen des Originalbrowserfensters eine schlechte Idee. Der Benutzer hat möglicherweise mehrere Seiten darin geöffnet und möchte nicht wegen Deiner Seite diese alle schließen.

    }
    setTimeout("reload();", 5000); //3 sek = 3000 millisek

    Doch siehe da. Mit IE7 wird vom popup nicht mehr weitergeleitet.

    Der Popupblocker des IE7 hat mit dem Öffnen der Zielseite nach 5 Sekunden keine Probleme, er erkennt, dass unaufgefordert ein Popup geöffnet werden soll - und erläutert dies in der entsprechenden Informationsleiste. Wenn Du dem Öffnen zustimmst, dann wird auch das Popup geöffnet.

    Dazu fragt der IE7 - wie es sich gehört - nach, ob das Browserfenster geschlosssen werden kann und befolgt auch hier artig Deine Entscheidung.

    Insgesamt erscheint mir Dein Konzept verbesserungswürdig. Dein Problem ist nicht das Verhalten des IE, sondern Dein Grundkonzept. Wunderbare Informationen zu diesem Thema kannst Du bei molily nachlesen: "Popups" mit Javascript.

    Freundliche Grüße

    Vinzenz

    1. hi,

      Insbesondere im Zeitalter von Tabbed Browsing ist das Schließen des Originalbrowserfensters eine schlechte Idee. Der Benutzer hat möglicherweise mehrere Seiten darin geöffnet und möchte nicht wegen Deiner Seite diese alle schließen.

      Das aber zu berücksichtigen, und bei mehreren geöffneten Tabs nur das aktuelle Tab zu schliessen, liegt für mich ganz eindeutig in der Verantwortung des Browsers.

      gruß,
      wahsaga

      --
      /voodoo.css:
      #GeorgeWBush { position:absolute; bottom:-6ft; }
      1. Hallo wahsaga,

        Das aber zu berücksichtigen, und bei mehreren geöffneten Tabs nur das aktuelle Tab zu schliessen, liegt für mich ganz eindeutig in der Verantwortung des Browsers.

        wie sich diverse Browser in diesem Fall verhalten, hab' ich noch nie getestet :-)

        Freundliche Grüße

        Vinzenz

    2. Hallo Vinzenz,

      window.close()

      Damit wird nicht das Popup geschlossen. Damit weist Du den Browser an, sich selbst zu schließen, das stößt möglicherweise auf Schwierigkeiten, wie Du im entsprechenden SELFHTML-Abschnitt, window.close() nachlesen kannst.

      Nicht ganz. Es ist ja ein eiganständiges Fenster. Damit wird ja nur das geschlossen.

      Zu meinem Grundkonzept wollte ich noch folgendes sagen. In diesem kleinem popup-Fenster steht ja lediglich die Info, dass in 5 Sekunden weitergeleitet wird, ansonsten man den Link klicken muss. Ich meine dieses Fenster kann man nach dem Öffnen der neuen Seite schon schließen lassen.

      Bei deinen anderen Punkten hast du natürlich recht.

      Gruß
      Jürgen

      1. Hallo Jürgen,

        window.close()

        Damit wird nicht das Popup geschlossen. Damit weist Du den Browser an, sich selbst zu schließen, das stößt möglicherweise auf Schwierigkeiten, wie Du im entsprechenden SELFHTML-Abschnitt, window.close() nachlesen kannst.

        Nicht ganz. Es ist ja ein eiganständiges Fenster. Damit wird ja nur das geschlossen.

        Nein, wieso?

        function reload()  
        {  
            window.open("http://www.blablabla.de")  
            window.close()  
        }
        

        Warum sollte sich window.close auf das immer noch namenlose Popup beziehen. Du ignorierst ja auch noch den Rückgabewert von window.open(). Darüber könntest Du das Fenster schließen.

        Dein Code weist den Browser an, nach fünf Sekunden ein neues Fenster zu öffnen und sich selbst anschließend zu schließen. Möchtest Du das Fenster gleich öffnen und nach fünf Sekunden schließen, so musst Du window.open gleich aufrufen, dabei den Rückgabewert in einer Variablen speichern, den Timeout von fünf Sekunden starten und anschließend das Fenster schließen.

        Andere Wege sind auch denkbar, z.B. Schließen des Popups über den Inhalt des Popups ...

        Freundliche Grüße

        Vinzenz

        1. Hallo Vinzenz,

          beachten wir mal die Geschichte mit dem window.close() nicht. Da hast du sicherlich recht. Doch leider funktioniert nicht mal die das window.open("http://www.blablabla.de"). Ich denke da hat steckl recht, daß eine automatische Weiterleitung aus dem Popup bedingt durch den Popup-Blocker nicht funktioniert. Ach ja, das script funktionierte bis IE7 noch recht gut. Ich werd jetzt aber auf alle Fälle noch weitertesten um das Problem zu lösen.

          Meld mich wieder :-)

          Gruß
          Jürgen

          1. Hallo Jürgen,

            beachten wir mal die Geschichte mit dem window.close() nicht. Da hast du sicherlich recht.

            Doch leider funktioniert nicht mal die das window.open("http://www.blablabla.de"). Ich denke da hat steckl recht, daß eine automatische Weiterleitung aus dem Popup bedingt durch den Popup-Blocker nicht funktioniert.

            Selbstverständlich, wie ich ja auch bereits schrieb.

            Ach ja, das script funktionierte bis IE7 noch recht gut.

            Nein, das gleiche Verhalten gab es auch schon mit IE6 SP2.
            Und ja, sehr viele Leute - alle vernünftigen - die XP verwenden, haben Service Pack 2 installiert. Windows XP ohne SP2 auf einem Arbeitsrechner halte ich für puren Leichtsinn, im beruflichen Einsatz für verantwortungslos.

            Dazu kommen Firefox und Opera, die solche Popups schon länger nicht mehr ohne weiteres öffnen - und genug Leute mit IE hatten auch vor SP2 schon einen Popup-Blocker installiert.

            Fazit: Unaufgeforderte Popups "funktionieren" schon seit Jahren auf breiter Ebene nicht mehr. Was meinst Du, warum inzwischen überall diese nervigen DIV-Elemente eingeblendet werden?

            Freundliche Grüße

            Vinzenz