Netscape, fileinput und onChange event
Novan
- javascript
Hallo,
ich habe da so ein Problem mit dem Netscape und Mozilla. Ich habe ein kleines Skript geschrieben, welches ausgelöst wird sobald man eine Datei auswählt in einem <input type="file" onChange="check_image"> Objekt. Wenn ich es nun im Opera und IE teste klappt alles und die alert-meldung erscheint und die Sachen werden visible. Wenn ich aber alles im Netscape oder Mozilla probiere, dann reagiert es nur wenn ich manuell etwas eintippe ins Feld und nicht wenn ich auf den Buttonklicke um eine Datei schön aus dem Dateisystem im Pop-Up Dialog auszuwählen.
Meine Frage desshalb: Gibt es dafür beim Netscape ein extra Event oder ein Workaround?
Es handelt sich um folgenden Code:
<script language="JavaScript" type="text/javascript">
<!--
function check_image(name)
{
var test1 = name.toLowerCase();
var test2 = name.toLowerCase();
test1 = test1.lastIndexOf(".png");
test2 = test2.lastIndexOf(".jpg");
if((test1 == -1) && (test2 == -1) && (name != ""))
{
alert("Das ausgewählte Bild ist nicht vom Typ JPEG oder PNG.\nDer Server akzeptiert nur Bilder von dem Typ!");
}
if(name != "")
{ document.getElementById('hallo').style.visibility = "visible";
}
else
{ document.getElementById('hallo').style.visibility = "hidden";
}
}
//-->
</script>
<form>
<input type="file" name="huhu" onChange="check_input(this.value)">
</form>
Nabend,
Meine Frage desshalb: Gibt es dafür beim Netscape ein extra Event oder ein Workaround?
Ohne es probiert zu haben, sei einfach mal ein onclick in den Raum geworfen.
Du hast aber sicherlich auch eine serverseitige Überprüfung und machst diesen JS-Krams nur zusätzlich, oder?
Bis denne,
Ja ich habe auch eine Serverseitige Prüfung der Daten und dieses JS soll eigentlich nur dafür da sein das erst gar nicht so etwas hochgeladen wird. Natürlich kann man es umgehen aber das ist auch unintressant. Es soll ja nur warnen, dass der Server die Datei eh abweisen wird.
Ich werde mal ein Workaround mittels onClick versuchen...ist zwar viel aufwendiger aber najo muß halt wegen dem blöden Netscape obwohl ich selber ja mit dem Firebird immer browser...der ist viel schneller bei JS als der IE
Meine Frage desshalb: Gibt es dafür beim Netscape ein extra Event oder ein Workaround?
Ich bin jetzt nicht sicher, aber eigentlich solltest du auf den Wert keinen Zugriff haben, da dies ein Sicherheitsrisiko darstellen würde. aber darüber hinaus ist dein Test zu kurz gedacht.
test1 = test1.lastIndexOf(".png");
test2 = test2.lastIndexOf(".jpg");
Es gibt Betriebssysteme wo nicht durch die Dateiendung der Dateityp bestimmt ist, d.h. dein Test funktioniert nicht. Du musst auf dem Server den Mime-Type prüfen, das ist die einzige halbwegs sichere Möglichkeit den Typ herrauszufinden.
Struppi.