Я знаю, що це давнє, і всі ці рішення - це злом навколо запобіжних заходів браузера з реальною цінністю.
Однак, fileInput.click () працює на поточному Chrome (36.0.1985.125 м) та поточному ESR Firefox (24.7.0), але не в поточному IE (11.0.9600.17207). Накладання файлового поля з непрозорістю 0 на верхній частині кнопки працює, але я хотів, щоб елемент зв’язку був видимим тригером, і підкреслення курсору не дуже працює в жодному браузері. Він спалахує, а потім зникає, ймовірно, браузер замислюється, чи дійсно така укладка наведення курсора застосовується чи ні.
Але я знайшов рішення, яке працює у всіх цих браузерах. Я не претендую на тестування кожної версії кожного веб-переглядача або знаю, що вона буде працювати назавжди, але, схоже, зараз відповідає моїм потребам.
Це просто: розмістіть поле введення файлу на екрані (позиція: абсолютна; вгорі: -5000px), покладіть навколо нього елемент мітки та натисніть на ярлик замість самого поля файлу.
Зауважте, що для виклику методу клацання мітки потрібно сценаріювати посилання, але це не робиться автоматично, як при натисканні на текст всередині елемента мітки. Мабуть, елемент посилання фіксує клацання, і він не переходить до мітки.
Зауважте також, що це не забезпечує спосіб відображення обраного на даний момент файлу, оскільки поле є поза екраном. Я хотів подати негайно, коли був обраний файл, тому для мене це не проблема, але вам потрібен дещо інший підхід, якщо ваша ситуація відрізняється.