Ich stochere jetzt mal im Nebel rum:
function pruefe() {
if(document.all&&!window.opera) {
var a=document.all.detail;
detail.document.body.scroll='no';
Ist detail im IE hier schon definiert? Ich glaube nicht, sonst könnten wir doch auf die Zeile mit dem a davor verzichten, da steht detail nämlich auch drin.
Außerdem wird hier <body> bearbeitet und in der analogen Zeile im nächsten Block stattdessen …
} else {
var a=document.getElementsByName('detail')[0];
document.getElementById('detail')
a.scrolling='no';
… <iframe>. Ist mir nicht klar.
}
var a=document.getElementsByName('detail')[0];
Überflüssige Zeile, a ist schon gesetzt.
detail.document.getElementsByTagName('body')[0].style.overflow='hidden';
Oben wird noch so ein Aufwand betrieben, um das IE-eigene document.all zu benutzen statt einer getElement-Funktion, und hier soll's plötzlich kein Problem mehr sein?
var b=detail.document.getElementById('cont');
Im Zieldokument stecken fehlerhafterweise zwei Elemente mit der ID cont. Aber davon abgesehen täte ich gleich auf <body> zurückgreifen, da ist wenigstens sicher, dass das immer vorhanden bleibt.
if(a.style.height != eval(b.offsetHeight+35)+'px') {
Auch überflüssig, sage ich jetzt mal, denn dass das beides gleich ist, dürfte seltenst passieren, entsprechend selten wäre Rechenaufwand einzusparen.
a.style.height=eval(b.offsetHeight+35)+'px';
Und wozu das eval(), wo eval() doch evil ist?
}
}
Alles in allem, ganz grob und ohne einen Schimmer, ob das funktioniert:
function pruefe() {
var iframename = 'detail';
if (document.getElementById) {
var a = document.getElementById(iframename);
var b = a.document.getElementsByTagName('body')[0];
a.scrolling = 'no';
}
else if (document.all && !window.opera) {
var a = document.all[iframename];
var b = a.document.tags['body'][0];
b.scroll = 'no';
}
else {
return;
}
b.style.overflow = 'hidden';
a.style.height = (b.offsetHeight + 35) + 'px';
}
"Dieser Fehler wird in den nächsten Tagen behoben."
Da schreibst du doch sicher noch "wird vom SELFHTML-Forum behoben".