AktualisierungsProblem aus einem iFrame im IE

emmis

New member
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!
 
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++;
 
Hast du mal einen Testlink, wo wir uns das live ansehen können?

PS: Woher kommen denn die ganzen "*" ein deinem Code?
 
Zurück
Oben