molily: appendChild IE & Safari

Beitrag lesen

Was mir auf Anhieb auffällt, vielleicht liegt der Kernfehler woanders:

var form  = document.getElementsByTagName('form')[0];

Kürzer: document.forms[0]

var left  = parent.document.getElementById('upload_left');
  var right  = parent.document.getElementById('upload_right');
  var iframe = parent.document.getElementsByTagName('iframe')[parent.upcount];

Kürzer:

var doc = parent.document,
    left = doc.getElementById('upload_left'),
    ...;

parent.upcount++;
  form.style.display="none";
  form.submit();

Ich weiß nicht, ob alle Browser es erlauben, dass File-Upload-Formular per JavaScript abgesendet werden können?!

right.innerHTML='<div style="width:75px; height:75px; float:left; margin:2px 2px 0px 0px; background:url(images/loading.gif) center no-repeat;">&nbsp;</div>'+right.innerHTML;

Wie wärs mit einem img-Element anstelle eines leeren divs?

var newform = document.createElement('<iframe>');

Das muss document.http://de.selfhtml.org/javascript/objekte/document.htm#create_element@title=createElement('iframe') lauten, du notierst hier keinen Start-Tag, sondern den Elementnamen als String.

newform.setAttribute('allowtransparency','true');
  newform.setAttribute('frameborder','0');
  newform.setAttribute('src','imageupload.php');
  newform.setAttribute('class','imageupload');

Attribute solltest du besser mit dem Schema element.attribut = "wert" setzen, also newform.src = "...", newform.className = "..." usw. Manche Browser wie IE tun sich mit der setAttribute-Schreibweise schwer.

var searchstring  = eval("/loading.gif/i");

Das eval hier ist unnötig, wenn du einen regulären Ausdruck notieren willst, kannst du einfach folgendes schreiben:

var searchstring = /loading.gif/i;

Das \ vor dem Punkt ist nötig, weil . sonst in einem regulären Ausdruck "beliebiges Zeichen" bedeutet.

for(i=0; i<div.length; i++){

Du solltst var i schreiben, damit i keine globale Variable ist.

Einfacher:

var divs = right.getElementsByTagName('div');
for (var i = 0, div; div = divs[i]; i++) {
   if (searchstring.test(div.style.background)) {
      div.style.background = "...";
   }
}

Mathias