‹input type=file /› открывает окно просмотра файлов в FireFox3 при нажатии на часть поля формы?

При нажатии на часть текстового поля <input type="file" /> в FireFox3 открывается окно просмотра файлов.

Этого не происходит в IE7. Вы должны нажать кнопку «Обзор», чтобы открыть окно просмотра файлов.

Как я могу предотвратить открытие окна просмотра файлов в FireFox, когда пользователь щелкает область текстового поля? Я бы хотел, чтобы он открывался только при нажатии кнопки.


person user19471    schedule 21.01.2009    source источник


Ответы (6)


Как я могу предотвратить открытие окна просмотра файлов в FireFox, когда пользователь щелкает область текстового поля?

Затемните его другим элементом.

<div style="position: relative">
    <input type="file" />
    <div style="position: absolute; top: 0; left: 0; width: 11em; height: 2em;"> </div>
</div>

Но не делай этого. Он ужасно хрупкий и может сломаться во многих случаях.

Я бы хотел, чтобы он открывался только при нажатии кнопки.

Я сомневаюсь, что вашим пользователям это понравится. Он удаляет ожидаемую функциональность из браузера и не заменяет ее чем-то лучшим. Или вообще что угодно.

person bobince    schedule 21.01.2009
comment
Спасибо за попытку ответить на вопрос. - person user19471; 21.01.2009
comment
Это также отключит кнопку «Обзор», если ширина не совпадает с шириной текстового поля. Это также отключит возможность выделения текста в поле и копирования. - person Adam Peck; 21.01.2009
comment
Действительно, как уже отмечалось, это не идеально. Размер в em более или менее соответствует тому, что делает Firefox 3, но вы никогда не сможете быть точным. И, конечно же, это сломает другие браузеры. Но для Firefox 3, увы, возможности вырезания и вставки уже нет. - person bobince; 21.01.2009
comment
Я могу скопировать в FireFox3. Я тестировал его только на Mac, но вы можете скопировать текст. И да, он сломает все другие браузеры, если вы не вставите его динамически только для FireFox. Это, вероятно, полностью сломает Safari, так как ввод файла намного короче, чем у других. - person Adam Peck; 21.01.2009

Почему вы не можете оставить ожидаемое поведение в покое? Большинство людей, использующих FireFox, ожидают, что это произойдет. Если нет фактической «дизайнерской» причины, которую вы не указали для того, чтобы это произошло, пожалуйста, не пытайтесь ее изменить.

person Adam Peck    schedule 21.01.2009
comment
Спасибо за ответ, сэр, но мой вопрос требует технического ответа. - person user19471; 21.01.2009
comment
Это технически невозможно. Если вы хотите изменить поведение FireFox по умолчанию, вы можете написать для него подключаемый модуль. - person Adam Peck; 21.01.2009
comment
@hornysaax Иногда технический ответ - не делайте этого. - person ceejayoz; 21.01.2009

Firefox ведет себя таким образом, чтобы предотвратить эксплойт, использующий ввод файла.

См. конец этой записи в блоге и некоторые из комментариев ниже.

Я согласен, что это очень раздражает не как дизайнера/разработчика веб-сайтов, а как пользователя Firefox; иногда я просто хочу вставить имя файла, и мне не нужно щелкать по диалоговым окнам.

person Francisco Canedo    schedule 21.01.2009
comment
Он действует так же, как Safari. Ожидает ли он изменить то, как это работает? - person Adam Peck; 21.01.2009
comment
Должен признать, это неожиданно для чего-то, похожего на элемент управления вводом текста, вести себя таким образом. Я имею в виду все, что похоже на ввод текста, вы можете щелкнуть, а затем ввести текст. Так что я могу понять, что он хочет изменить что-то, что ему незнакомо. - person Francisco Canedo; 21.01.2009
comment
Вы можете вставить имя файла, включая полный путь, в поле имени файла диалогового окна открытия файла Windows. - person awe; 09.10.2009

Даже если бы вы действительно хотели это сделать, я не думаю, что это возможно.

person baretta    schedule 21.01.2009

Да, это так, и веб-страница ничего не может с этим поделать.

Я не знаю о настройке конфигурации FF, которая бы контролировала это, поэтому вы застряли с № 3:

С расширением возможно можно изменить это поведение, но тогда вам придется заставить пользователей установить ваше расширение (может быть выполнимо для внутреннего приложения) и справиться с ошибками, которые оно может вызвать. в приложение.

person Piskvor left the building    schedule 21.01.2009

Не будет ли простым обходным путем создать поле ввода текста, а также кнопку, при этом кнопка будет использоваться для запуска браузера файлов, а затем заполнить информацию обратно в текстовое поле? Я новичок во всем этом и читаю много вопросов по этой проблеме, в том числе тот факт, что FF3 не применяет те же стили css к входному = файлу, что и в предыдущих версиях.

person Community    schedule 16.07.2009