Hi,
Ich benutze seit Jahren folgendes Script als Grundlage, um DIVs (auch mutiple DIVs) zu aktualisieren …
Der Aufruf erfolgt dann z.B. über:
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:
Und rufe das Ganze zB. mit
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!
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!