problem mit setInterval und IE
basti_p
- javascript
Hallo,
um mein CMS auch für Browser abseits des IE brauchbar zu machen, ersetze ich die editierbaren Bereiche der Seiten durch iframes. Damit sich, abhängig von dem geschriebenen Text, die Höhe der iframes dynamisch anpasst, gibt es in der eingebetteten Datei im iframe eine Funktion, die die Höhe des bodys zurückgibt:
function getHeight()
...
return document.body.offsetHeight;
...
Diese Funktion wird von der übergeordneten Seite mit setInterval alle 250 Millisekunden aufgerufen und mit der Höhe des iframes verglichen:
var invl=null;
function init()
{
var frm = null;
if (frm = document.getElementById("contentarea1"))
{
var check=0;
check=parent.contentarea1.getHeight();
if(document.getElementById('contentarea1').offsetHeight && check>document.getElementById('contentarea1').offsetHeight)
{
document.getElementById('contentarea1').style.height=check+20+"px";
}
}
if(invl==null)
{
//make editable
if(parent.contentarea1.contentDocument)
{
var doc=document.getElementById('contentarea1').contentDocument;
}
if(parent.contentarea1.document)
{
var doc=parent.contentarea1.document;
}
doc.designMode="ON";
invl=window.setInterval('init()',250);
}
}
Im Firefox funktioniert das Ganze, der IE bricht nach der 2. Wiederholung mit er Fehlermeldung: "Das Objekt unterstützt diese Eigenschaft... nicht" ab. Er hat Probleme mit dem wiederholten Aufruf von getHeight() - beim 1. Mal klappt es. Habt ihr eine Idee?
Danke und Grüße Basti
Hallo,
ich habe herausgefunden, dass der IE im designMode keine Skripte ausführt. Jetzt sehe ich keine Möglichkeit, die Größe des iframes an den Inhalt dynamisch anzupassen da ich keinen Zugriff auf die Elemente (z.b. body) mehr habe. Hat jemand einen Lösungsansatz?
Danke und Grüße Basti