D Schwarz: firefox setInterval top.close

Hallo Leute!

Ich habe ein javascript, dass ein Popup öffnet. Dieses Popup soll einen HTMLrequest nach AJAX-Manier starten. Wenn der HTMLrequest fehlschlägt, soll das Popup sich schließen. Wichtig ist, dass setinterval benutzt wird. Mit dem IE läuft es. Mit Firefox 2 funktioniert es nur, wenn ich auf das Popup nach 1000 ms klicke. Was mache ich falsch bzw. ist das ein Bug?

CODE:
Erstes HTML-File (dieses muss man aufrufen):
<html>
  <body>
  <script language="javascript">
    window.open('popup.html','popup','width=450,height=175,status=no,toolbar=no,menubar=no,resizable=yes,location=no');
  </script>
  </body>
</html>

Zweites HTML-File (popup):
<html>
  <script type="text/javascript">
    function ajaxFunction(){
     var ajaxRequest;

try{
      // Opera 8.0+, Firefox, Safari
      ajaxRequest = new XMLHttpRequest();
     } catch (e){
      // Internet Explorer Browsers
      try{
       ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
      } catch (e) {
       try{
        ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
       } catch (e){
        //browsers all not support, rare case
        alert("Your browser broke!");
        return false;
       }
      }

}
     return ajaxRequest;
    }

function showData(htmlcode) {
      var htmlRequest;
      htmlRequest = ajaxFunction();
     if (htmlRequest==null){ // If it cannot create a new Xmlhttp object.
      alert ("Browser does not support HTTP Request");
      return;
     }

htmlRequest.onreadystatechange = function(){
      if(htmlRequest.readyState == 4){
        if (htmlRequest.status!=200) {
          setInterval("top.close()", 10);
          } else {
         document.getElementById("shoutarea").innerHTML = htmlRequest.responseText;
          }
      }
     }

htmlRequest.open("GET", htmlcode, true);
      htmlRequest.send(null);
    }

</script>

<body>
  <script type="text/javascript">
    setInterval("showData('diesesFileExistiertNicht.html')", 1000);
  </script>
  </body>
</html>

  1. Ich habe ein javascript, dass ein Popup öffnet. Dieses Popup soll einen HTMLrequest nach AJAX-Manier starten. Wenn der HTMLrequest fehlschlägt, soll das Popup sich schließen. Wichtig ist, dass setinterval benutzt wird. Mit dem IE läuft es. Mit Firefox 2 funktioniert es nur, wenn ich auf das Popup nach 1000 ms klicke. Was mache ich falsch bzw. ist das ein Bug?

    Gibt es eine Fehlermeldung?
    Aber warum eigentlich interval, damit rufst du alle 10 Miliskekunden top.close() auf.

    Struppi.

    1. Ich habe ein javascript, dass ein Popup öffnet. Dieses Popup soll einen HTMLrequest nach AJAX-Manier starten. Wenn der HTMLrequest fehlschlägt, soll das Popup sich schließen. Wichtig ist, dass setinterval benutzt wird. Mit dem IE läuft es. Mit Firefox 2 funktioniert es nur, wenn ich auf das Popup nach 1000 ms klicke. Was mache ich falsch bzw. ist das ein Bug?

      Gibt es eine Fehlermeldung?
      Aber warum eigentlich interval, damit rufst du alle 10 Miliskekunden top.close() auf.

      Hallo Struppi,

      nur so kann man bei Firefox das Popup schließen. Wenn ich dort nur top.close() schreibe, dann tritt der genannte "Fehler" auf.
      (Das setInterval mit 10ms sollte kein Problem sein, da das Fenster geschlossen wird. Ok, setTimeout ist eleganter :))

      Viele Grüße
      Daniel

      1. Gibt es eine Fehlermeldung?

        Nein, leider nicht.

        Viele Grüße