Ergebnis 1 bis 5 von 5
  1. #1
    emmis ist offline Mitglied
    registriert
    22-07-2009
    Beiträge
    47

    AktualisierungsProblem aus einem iFrame im IE

    Hi,

    Ich benutze seit Jahren folgendes Script als Grundlage, um DIVs (auch mutiple DIVs) zu aktualisieren …

    Code:
    <script type="text/javascript">
    var LoaderObject = function()
    {
    * * this.connection * * * * * * * *= false;
    * * this.running * * * * * * * *= false;
    * * this.requestQueue * * * * * *= new Array();
    * * this.requestCounter * * * * * *= 0;
    * * this.requestQueueCounter * *= 0;
    };
    *
    *
    LoaderObject.prototype.initialize = function()
    {
    * * if (window.XMLHttpRequest)
    * * {
    * * * * this.connection = new XMLHttpRequest();
    * * }
    * * else if (window.ActiveXObject)
    * * {
    * * * * try
    * * * * {
    * * * * * * this.connection = new ActiveXObject("Msxml2.XMLHTTP");
    * * * * }
    * * * * catch (e)
    * * * * {
    * * * * * * try
    * * * * * * {
    * * * * * * * * this.connection = new ActiveXObject("Microsoft.XMLHTTP");
    * * * * * * }
    * * * * * * catch (e)
    * * * * * * {
    * * * * * * * * return false;
    * * * * * * }
    * * * * }
    * * }
    *
    * * return true;
    };
    *
    *
    LoaderObject.prototype.runRequest = function()
    {
    * * if(this.running)
    * * {
    * * * * return false;
    * * }
    *
    * * if(!this.connection)
    * * {
    * * * * var reconnected = this.initialize();
    * * * * if(!reconnected)
    * * * * {
    * * * * * * return false;
    * * * * }
    * * }
    *
    * * this.running = true;
    *
    * * var request = this.requestQueue[this.requestCounter];
    *
    * * if
    * * (
    * * * * !request['url'] ||
    * * * * !request['elementId']
    * * )
    * * {
    * * * * return false;
    * * }
    *
    * * try
    * * {
    * * * * this.connection.open('GET', request['url'], true);
    * * }
    * * catch(e)
    * * {
    * * * * return false;
    * * }
    *
    * * this.connection.onreadystatechange = function()
    * * {
    * * * * if (Loader.connection.readyState == 4)
    * * * * {
    * * * * * * if (Loader.connection.status == 200)
    * * * * * * {
    * * * * * * * * document.getElementById(Loader.requestQueue[Loader.requestCounter].elementId).innerHTML = Loader.connection.responseText;
    *
    * * * * * * * * Loader.requestCounter++;
    * * * * * * * * Loader.requestQueueCounter--;
    *
    * * * * * * * * if (Loader.requestQueue.length > Loader.requestCounter)
    * * * * * * * * {
    * * * * * * * * * * Loader.running = false;
    * * * * * * * * * * setTimeout("Loader.runRequest()",100);
    * * * * * * * * }
    * * * * * * * * else
    * * * * * * * * {
    * * * * * * * * * * Loader.running = false;
    * * * * * * * * * * Loader.requestQueue = new Array();
    * * * * * * * * * * Loader.requestCounter = 0;
    * * * * * * * * * * Loader.requestQueueCounter = 0;
    * * * * * * * * }
    * * * * * * }
    * * * * * * else
    * * * * * * {
    * * * * * * * * alert('connection error : '+Loader.connection.status);
    * * * * * * }
    * * * * }
    * * };
    *
    * * this.connection.send(request['send']);
    * * return true;
    };
    *
    *
    LoaderObject.prototype.add = function(requestObject)
    {
    * * var requestsParams = requestObject.split('|');
    *
    * * this.requestQueue[this.requestQueue.length] = {
    * * * * * * 'elementId' * * * *: requestsParams[0] * * * *|| false,
    * * * * * * 'url' * * * * * *: requestsParams[1] * * * *|| false
    * * };
    *
    * * this.requestQueueCounter++;
    }
    *
    *
    LoaderObject.prototype.register = function(request)
    {
    * * if(typeof(request) != 'string')
    * * {
    * * * * return false;
    * * }
    *
    * * var requestObjects * *= request.split(',');
    *
    * * if(typeof(requestObjects) == 'object')
    * * {
    * * * * for(var index in requestObjects)
    * * * * {
    * * * * * * this.add(requestObjects[index]);
    * * * * }
    * * }
    *
    * * if
    * * (
    * * * * !this.running &&
    * * * * this.requestQueueCounter > 0
    * * )
    * * {
    * * * * this.runRequest();
    * * }
    *
    * * return null;
    };
    *
    var Loader = new LoaderObject();
    Der Aufruf erfolgt dann z.B. über :

    Code:
    Loader.register('divname|startax.php');
    Das funktioniert in allen Browsern ohne zu mucken.

    Jetzt wollte ich das Ganze aus einem iFrame heraus mit einem window.onload benutzen. Dazu verändere ich die AktualisierungsAddresse zu:

    Code:
    window.parent.document.getElementById(Loader.requestQueue[Loader.requestCounter].elementId).innerHTML = Loader.connection.responseText;
    Und rufe das Ganze zB. mit

    Code:
    function startdas()*
    {
    Loader.register('divname|startax.php');
    Loader.register('divname1|startax1.php');
    }
    
    window.onload = startdas;
    Das funktioniert bei alles, ausser dem IE. Dort bekomme ich eine Fehlermeldung:

    Unable to get property 'requestCounter' of undefined or null reference

    Kann mir jemand erklären, warum das so ist und wie ich eventuell da korrigieren muss?
    Vielen Dank für Ideen!

  2. #2
    Avatar von mikdoe
    mikdoe ist offline Administrator
    registriert
    01-05-2010
    Beiträge
    7.625

    AW: AktualisierungsProblem aus einem iFrame im IE

    Welche IE Version probierst du? Und kommt der Fehler im Edge auch?
    Das deutsche Javascript Forum http://forum.jswelt.de http://forum.jswelt.de/images/logoJsWeltForumV4_32x22.png
    Sorry wenn ich manchmal ohne Hallo und nur klein schreibe! Dann bin ich nicht unfreundlich sondern mit nervigem kleinem Touch Tablet zugange

  3. #3
    emmis ist offline Mitglied
    registriert
    22-07-2009
    Beiträge
    47

    AW: AktualisierungsProblem aus einem iFrame im IE

    Hallo!

    ... ja dasselbe passiert im Edge. Ich habe bis zum IE10 herunterprobiert.

    Schräg!

  4. #4
    emmis ist offline Mitglied
    registriert
    22-07-2009
    Beiträge
    47

    AW: AktualisierungsProblem aus einem iFrame im IE

    Nachtrag:

    IE10 liefert einen etwas anderen Fehler, bezieht sich aber auf diesselbe Zeile des Scriptes wie bei IE11 und Edge

    Fehler IE10:
    "SCRIPT5009: "Loader" ist undefiniert "

    Zeile:
    Loader.requestCounter++;

  5. #5
    Avatar von kkapsner
    kkapsner ist offline Super Moderator
    registriert
    28-03-2008
    Beiträge
    17.672

    AW: AktualisierungsProblem aus einem iFrame im IE

    Hast du mal einen Testlink, wo wir uns das live ansehen können?

    PS: Woher kommen denn die ganzen "*" ein deinem Code?

Ähnliche Themen

  1. jQuery JSON Aktualisierungsproblem
    Von dogsnhumans.de im Forum JavaScript
    Antworten: 4
    Letzter Beitrag: 19-08-2012, 16:17
  2. Lytebox in einem iFrame
    Von raggaman im Forum JavaScript
    Antworten: 3
    Letzter Beitrag: 04-10-2009, 15:08
  3. Antworten: 2
    Letzter Beitrag: 04-07-2009, 11:54
  4. Preloader für Seite in einem IFrame
    Von prodigy7 im Forum JavaScript
    Antworten: 6
    Letzter Beitrag: 08-12-2005, 17:25
  5. per js aus einem iframe auf formular zugreifen
    Von jimbo2k im Forum JavaScript
    Antworten: 3
    Letzter Beitrag: 21-07-2005, 14:18

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •