Dieter Raber: Script funktioniert nicht unter FF/Mac

Hallo,

ich habe ein Problem mit einem Javascript, das auf FF 3, WinXP problemlos laeuft, nicht jedoch auf FF 3, OSX.

Im Prinzip funktioniert das Programm so, dass ich eine Uploadform habe, die aus Filefield und Button besteht. Mit Javascript wird das Filefield transparent, und das Textfeld und der Ordner eingefuegt.

Ausserdem werden verschiedene Elemente ('Overlays') eingehaengt, die den Button oder das Feld sperren oder aber eine Status ausgeben.
Das Problembild

Soweit funktioniert das problemlos unabhaengig vom Betriebssystem.
Was im Mac nicht funktioniert, ist das Anzeigen/Verbergen der Overlays, insbesondere, wenn die Events zum Filefield gehoeren. Was passieren sollte ist folgendes (die Vorsilbe 'j' steht fuer jQuery Object, den Code habe ich etwas vereinfacht)

  
// wir sind hier mitten in einer JS Klasse  
this.jUplElement.change(function() {  
    if(!this.value) {  
      selfRef.jBtnCover.show(); // jBtnCover = button overlay  
      selfRef.jUplStatus.hide(); // jUplStatus = status overlay  
      return false;  
    }  
    else {  
      selfRef.jBtnCover.hide();  
      return true;  
    }  
  })  
  .click(function() {  
    selfRef.jUplStatus.hide();  
    return true;  
  })  
}  

Im FF Mac tut sich nichts. Leider kann ich auf dem Mac nicht vernuenftig debuggen, ich muss mir dazu immer den Laptop der Kollegin ausleihen.

Kann mich jemand vielleicht in die richtige Richtung schubsen?

Vielen Dank

Dieter

  1. Das Problem hat sich erledigt. Ich hatte noch ein console.log() irgendwo, das ich mangels Debugmoeglichkeiten auf dem Mac uebersehen hatte

    Dieter

  2. Das klingt eher nach einem CSS- als einem JavaScript-Problem - wahrscheinlich sind die Overlays nicht da, wo sie hinsollen.

    Warum verwendest Du nicht lieber die Kontrolle, die Du mit JavaScript über das Formular hast (input.disabled=true, input.src='otherimage.png', form.onsubmit=function(){return false;}), um ein Absenden zu verhindern und entsprechende Optik zu erzielen?

    Gruß, LX

    --
    RFC 1925, Satz 3: Mit ausreichendem Schub fliegen Schweine wunderbar. (...)
    1. Hallo LX,

      du hast ziemlich gleichzeitig mit mir gepostet und so wahrscheinlich nicht rechtzeitig mitbekommen, das mein Problem geloest ist.

      Der Grund fuer das Overlay ist, dass ich dann einen Cursor 'not-allowed' setzen kann, das ist beim Filefield nicht drin. Die Felder werden aber ohnehin disabled, weil die ganze JS/CSS-Spielerei zB. in Safari nicht funktioniert (und mein Budget ist auch nicht gross genug, mich darum zu kuemmern).

      Wie du auf dem Screenshot vielleicht gesehen hast, geht es um Bilderupload. Die Benutzer werden zweifellos trotz entsprechender Hinweise alles tun, was sie nicht sollen (zu grosse Bilder, falsche Formate etc.), weshalb ich versuche, bereits im Vorfeld mit Javascript so viel wie moeglich abzufangen.

      Jedenfalls vielen Dank fuer Deinen Beitrag

      Dieter