2012-08-26 17 views
5

Duplicar posible:
In JavaScript can I make a “click” event fire programmatically for a file input element?¿Cómo puedo abrir programáticamente el selector de archivos con JavaScript?

he ingenuamente intentado lo siguiente para abrir el selector de archivos mediante programación con JavaScript (ver violín here):

<input type='file'>​ 

<script> 
    $(function() { 
     $('input').click(); 
    }); 
</script> 

Los doesn anteriores no funciona ¿Cómo puedo abrir el selector de archivos de un input type='file' con JavaScript?

+0

Eso es, por supuesto, jQuery? –

+0

@JaredFarrish: jQuery o no, no me importa. – Randomblue

+0

Por razones de seguridad, no puede hacer eso. – SLaks

Respuesta

8

Por razones de seguridad no se puede desencadenar el cuadro de diálogo, a menos que sea como respuesta a algún usuario desencadena evento. Se podría, por ejemplo, activar el diálogo a través de un clic en algún otro elemento:

$(function() { 
    $(".someElement").click(function() { 
     $('#f').click(); 
    }); 
}); 

Working example.

5

Como medida de seguridad, solo puede abrir dichos diálogos en una entrada de usuario, como un evento de clic (en cualquier elemento). No puede abrirlo al azar, como en la carga de la página.

http://jsfiddle.net/fEBFp/2/

+2

Creo que es un poco extraño que no haya una excepción de seguridad en la consola. –

+3

Respondiendo a la entrada del usuario funciona bien entre navegadores, solo una cosa. Si la entrada del archivo tiene 'display: none' o' visibility: hidden', es posible que el diálogo no se abra en los navegadores más antiguos. Aquí hay un [violín] (http://jsfiddle.net/ult_combo/fEBFp/3/) usando un ejemplo de enmascaramiento alternativo sin 'display' /' visibility' CSS. –

+0

Gracias. En Chrome coloco la entrada del archivo en un div 0x0px ahora. En Firefox ni siquiera es necesario insertar la entrada del archivo en el documento. – Robert

Cuestiones relacionadas