2012-08-26 18 views
5

Powiel możliwe:
In JavaScript can I make a “click” event fire programmatically for a file input element?Jak mogę programowo otworzyć selektor plików za pomocą JavaScript?

ja naiwnie próbowałem następujące otworzyć selektora plików programowo z JavaScript (patrz skrzypce here):

<input type='file'>​ 

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

Powyższe nie robi nie działa. Jak mogę otworzyć selektor plików pliku input type='file' z JavaScript?

+0

To jest, oczywiście, jQuery? –

+0

@JaredFarrish: jQuery czy nie, nie obchodzi mnie to. – Randomblue

+0

Ze względów bezpieczeństwa nie można tego zrobić. – SLaks

Odpowiedz

8

Ze względów bezpieczeństwa nie można wywołać okno, chyba że jest to odpowiedź na jakiś użytkownik wywołał zdarzenie. Można na przykład wywołać okno poprzez kliknięcie na jakiś inny element:

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

Working example.

5

Jako środek bezpieczeństwa, można otwierać takie okna dialogowe tylko na danych wejściowych użytkownika, takich jak zdarzenie kliknięcia (niezależnie od elementu). Nie można otworzyć go losowo, na przykład podczas ładowania strony.

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

+2

Myślę, że to trochę dziwne, ale nie ma wyjątków bezpieczeństwa w konsoli. –

+3

Odpowiadanie na dane wprowadzone przez użytkownika działa dobrze w różnych przeglądarkach, tylko jedna rzecz. Jeśli dane wejściowe pliku mają wartość 'display: none' lub' visibility: hidden', okno dialogowe może nie zostać otwarte w starszych przeglądarkach. Oto [skrzypce] (http://jsfiddle.net/ult_combo/fEBFp/3/) na przykładzie alternatywnego maskowania bez CSS "display"/"visibility". –

+0

Dziękuję. W Chrome wstawiam teraz dane wejściowe do elementu div 0x0px. W przeglądarce Firefox nie jest nawet konieczne wstawianie danych wejściowych do dokumentu. – Robert

Powiązane problemy