Der beliebte IE macht mal wieder gar nix

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Der beliebte IE macht mal wieder gar nix

    Guten Tag,

    ich habe hier eine kleine Klasse in JS geschrieben. (meine erste ;-))

    Im IE und Opera funktioniert alles ganz genau so, wie ich das haben will.

    Der IE zeigt nur sein hässliches Warndreieck an und macht gar nix.

    Hier der code:

    Code:
    function register()
    {  
      this.ajax = create_my_obj();  
      this.ajax.onreadystatechange = stathandler;
      var robj = this;  
      this.check = pruefen;
      this.go = abruf;
      this.warteschlange = new Array;
      
      function pruefen(fieldID, fieldValue)
      { 
          this.warteschlange.push("ID="+encodeURIComponent(fieldID)+"&wert="+encodeURIComponent(fieldValue));
          this.go(); 
      }
      
      function abruf()
      {   
          if((this.ajax.readyState == 4 || this.ajax.readyState == 0)  && this.warteschlange.length > 0)
          {        
          this.ajax.open('POST', 'URL', true);
    		  this.ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=UTF-8");
    		  this.ajax.send(this.warteschlange.shift());	      
          } 
          else
          {
            window.setTimeout("reg.go()", 100);
          }  
          
      }
      
      
      function stathandler()
      {     
        if (robj.ajax.readyState == 4) 
    					{
    							if (robj.ajax.status == 200) 
    							{							    
    									var response = eval('('+robj.ajax.responseText+')');									
                      document.getElementById(response['element']).value = response['val'];		 
    							}
              }
      }
    
    }
    
    var reg = new register;

    Eigentlich soll die Klasse bei jedem onblur-event einen ajax-request starten, wenn das Objekt gerade frei ist.
    Ansonsten 100ms später nochmal probieren.

    Im IE klappt das aber nur beim allerersten Mal, danach macht er nichts mehr!
    Die Fehlermeldung des IE:
    "Das Objekt unterstützt diese Eigenschaft oder Methode nicht"

    Hat jemand ne Ahnung, was ich da falsch mache?

    Gruss
    Tempim.de - Dein kostenloser Bildhoster
    Tipps und Tricks für Webmaster

  • #2
    Der IE gibt normalerweise auch noch eine Zeilenangabe mit - schon mal geguckt wo es hakt?
    Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

    Kommentar


    • #3
      Er sagt Zeile 8, aber es gibt keinen Hinweis darauf, in welcher Datei die Zeile sein soll...
      Tempim.de - Dein kostenloser Bildhoster
      Tipps und Tricks für Webmaster

      Kommentar


      • #4
        Und das sollen wir jetzt herausfinden? Soviele Dateien wirst du wohl nicht haben oder? Kommentier eine nach der anderen aus und finde heraus in welcher Datei der Fehler auftritt. Wenn es Abhängigkeiten gibt kopier im Zweifelsfall alles in eine Datei.
        Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

        Kommentar


        • #5
          das hab ich jetzt rausgefunden...
          der fehler ist weg!


          das andere problem ist auch fast gelöst, aber auch nur fast...

          und zwar hab ich rausgefunden, dass der IE das ajax-objekt wohl nur 1x benutzen kann?? (?!?!)

          hat jemand ne idee?
          Tempim.de - Dein kostenloser Bildhoster
          Tipps und Tricks für Webmaster

          Kommentar


          • #6
            Sooooooooo!!!!!! Ich hab das Rätsel gelöst.

            Der fertige Code incl. debugging zeugs sieht folgendermaßen aus:

            Code:
            abfrage = my_layer(1, 1 , 325, 50, "#FFFFFF", 1, "smallpic", 0);
            
            function register()
            {  
              
              this.ajax = create_my_obj();  
              this.ajax.onreadystatechange = stathandler;
              var robj = this;  
              this.check = pruefen;
              this.go = abruf;
              this.warteschlange = new Array;
              
              abfrage.innerHTML = "1: "+typeof this.ajax;
              
              function pruefen(fieldID, fieldValue)
              { 
                  abfrage.innerHTML = "6: "+typeof this.ajax;
                  this.warteschlange.push("ID="+encodeURIComponent(fieldID)+"&wert="+encodeURIComponent(fieldValue));
                  abfrage.innerHTML = "2: "+typeof this.ajax;
                  this.go(); 
                  
              }
              
              function abruf()
              {   
                  //robj.ajax = create_my_obj();
                  //robj.ajax.onreadystatechange = stathandler;
                  if((this.ajax.readyState == 4 || this.ajax.readyState == 0)  && this.warteschlange.length > 0)
                  {        
                  this.ajax.open('POST', 'url', true);
            		  this.ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=UTF-8");
            		  this.ajax.send(this.warteschlange.shift());	
                  abfrage.innerHTML = "8: "+typeof this.ajax;      
                  } 
                  else
                  {
                   var timeout1 =  window.setTimeout("reg.go()", 100);
                   abfrage.innerHTML = "7: "+typeof this.ajax;
                  } 
                  
                  
                  //abfrage.innerHTML = "3: "+typeof this.ajax;
              }  
              
              function stathandler()
              {     
              abfrage.innerHTML = "4: "+typeof robj.ajax;
                if (robj.ajax.readyState == 4) 
            					{
            							if (robj.ajax.status == 200) 
            							{		
                          abfrage.innerHTML = "5: "+typeof robj.ajax;					    
            									var response = eval('('+robj.ajax.responseText+')');									
                              document.getElementById(response['element']).value = response['val'];		        
                              robj.ajax = create_my_obj();
                  robj.ajax.onreadystatechange = stathandler;       
            							}
                      }
              }
             
            }
            
            der IE konnte wohl nur einmal was mit dem Objekt anfangen, also hab ich es einfach nochmal erstellt, nachdem ein request abgeschlossen war.
            
            aber warum ist das so? 
            var reg = new register;
            Tempim.de - Dein kostenloser Bildhoster
            Tipps und Tricks für Webmaster

            Kommentar

            Lädt...
            X