Wiem, że to jest stare, a wszystkie te rozwiązania to hacki wokół środków bezpieczeństwa przeglądarki z prawdziwą wartością.
Powiedział, że na dzień dzisiejszy fileInput.click () działa w bieżącym Chrome (36.0.1985.125 m) i bieżącym Firefox ESR (24.7.0), ale nie w bieżącym IE (11.0.9600.17207). Nakładanie pola pliku z kryciem 0 na przycisk działa, ale chciałem elementu odsyłacza jako widocznego wyzwalacza, a podkreślenie najechania nie działa w żadnej przeglądarce. Miga, a następnie znika, prawdopodobnie przeglądarka zastanawia się, czy styl najechania faktycznie ma zastosowanie, czy nie.
Ale znalazłem rozwiązanie, które działa we wszystkich tych przeglądarkach. Nie twierdzę, że przetestowałem każdą wersję każdej przeglądarki lub że wiem, że będzie działać wiecznie, ale wydaje się, że teraz spełnia moje potrzeby.
To proste: ustaw pole wprowadzania pliku poza ekranem (pozycja: bezwzględna; góra: -5000px), umieść wokół niego element etykiety i uruchom kliknięcie etykiety zamiast samego pola pliku.
Zauważ, że link musi zostać napisany w skrypcie, aby wywołać metodę kliknięcia etykiety, nie robi to automatycznie, na przykład po kliknięciu tekstu w elemencie etykiety. Najwyraźniej element linku rejestruje kliknięcie i nie przenika do etykiety.
Zauważ również, że nie zapewnia to sposobu pokazania aktualnie wybranego pliku, ponieważ pole jest poza ekranem. Chciałem przesłać natychmiast po wybraniu pliku, więc nie jest to dla mnie problemem, ale będziesz potrzebować nieco innego podejścia, jeśli Twoja sytuacja jest inna.