comment obtenir les fichiers de & lt; input type = 'fichier' ... / & gt; (Indirect) avec javascript

J'ai un problème avec un "tag" dans le non-IE navigateurs

<input type="file" ...

Je suis en train d'écrire mon uploader , juste à l'aide de javascript et asp.net.

Je n'ai pas de problème de téléchargement de fichiers.

Mon problème s'est produit Lorsque j'ai voulu obtenir mes fichiers non IE navigateurs avec

<input type="file" ...

Je ne veux pas utiliser directement à partir de input parce que son apparence ne change pas correctement

J'ai écrit ce code pour obtenir des fichiers à partir du disque dur :

function $tag(_str_tag) {
return document.getElementsByTagName(_str_tag);
}

function $create(_str_tag) {
    return document.createElement(_str_tag);
}


function $open_file() {
    _el_upload = $create("input");
    _el_body = $tag("body")[0];
    _el_upload.setAttribute("type", "file");
    _el_upload.style.visibility = "hidden";
    _el_upload.setAttribute("multiple", "multiple");
    _el_upload.setAttribute("position", "absolute");
    _el_body.appendChild(_el_upload);
    _el_upload.click();
    _el_body.removeChild(_el_upload);
    return _el_upload.files;
}

Dans IE, ça fonctionne très bien et retourne à mes fichiers actuellement ;
Dans Chrome Et Firefox , Après le chargement de fichiers "boîte de dialogue de saisie" , il ne peut pas retourner n'importe quel fichier.
Et Opera et Safari sont complètement out.

Je peut le fixer avec ce truc , mais il n'est pas bon en gros.

_el_upload.click();
alert();

Je pense que le "rappel" ou "fonction d'attente" peut remédier à ce problème , mais je ne peut pas le manipuler.

source d'informationauteur Shamshirsaz.Navid