HTML-файл формы загрузки - PullRequest
       12

HTML-файл формы загрузки

2 голосов
/ 12 октября 2009

У меня есть веб-приложение с простым требованием загрузки файла (не более 1 МБ). Веб-приложение - это внешний сайт, который должен (насколько это возможно) быть совместимым со всеми браузерами и версиями.

Мы используем технологию C # .net 3.5 ASP .Net (IIS 7).

У нас возникли проблемы с реализацией элемента управления загрузкой файлов:

<input type="file" ... />

Кнопки не нажимаются правильно, и разные способы ввода (например, щелчок по текстовому полю в некоторых браузерах откроет поле ввода).

Нам нужно избегать сторонних инструментов загрузки файлов.

Каков наилучший способ сделать это совместимым со всеми браузерами? Можем ли мы использовать фреймворки (например, мы могли бы использовать JQuery) для этого?

Любая помощь очень ценится.

Edit:

Вот более подробные сведения о поведении:

Предназначенный / Ожидаемое:

Последовательное использование поля текстового поля (для имени файла):

  • отображает имя файла выбранного файла
  • отсутствие событий запускает диалог просмотра

Последовательное использование кнопки обзора:

  • те же стандарты CSS, что и у стандартной кнопки HTML для внешнего вида
  • открывает диалог просмотра
  • диалог отмены - очищает текстовое поле
  • диалоговое окно в порядке - (пере) заполняет текстовое поле

Нам бы хотелось, чтобы текстовое поле и кнопка выглядели так же, как и остальная часть нашего веб-сайта.

Ток:

  • события щелчка текстового поля открывает диалог
  • общее отображение текстового поля и поля кнопки
  • кнопка обзора не работает с некоторыми браузерами (не запускает событие диалога обзора, но отображается)

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

Ответы [ 3 ]

7 голосов
/ 12 октября 2009

Каков наилучший способ сделать это совместимым со всеми браузерами?

Он уже совместим со всеми браузерами. Только не пытайтесь слишком усердно писать сценарий или пересматривать стиль. У вас есть минимальные возможности настройки с полем загрузки файла, отчасти по очевидным причинам безопасности и отчасти потому, что многократный рендеринг расположения текста + кнопки во многих браузерах просто не поддается стилизации примитивов, которые работают на отдельных полях.

(например, если щелкнуть текстовое поле в некоторых браузерах, откроется поле ввода).

К счастью, люди, чьи браузеры делают это, уже будут использоваться для заполнения полей загрузки; действительно, они будут ожидать, что браузер сделает это, и будут сбиты с толку, если вам удастся остановить это.

(И это разумная мера: разрешение ввода в поле имени файла редко бывает полезным, но в прошлом оно вызывало дыры в безопасности.)

Последовательное использование кнопки обзора:

Ничто в поле загрузки файла не требует даже кнопки просмотра или диалогового окна поиска файлов. Вы могли бы, например, драп и падение вместо этого. Браузер решает это; как автор сайта вы не заглядываете.

Нам бы хотелось, чтобы текстовое поле и кнопка выглядели так же, как и остальная часть нашего веб-сайта.

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

Существует один подход , который можно сортировать, чтобы загрузка файла выглядела так, как вы хотите, но это не очень хорошо. Вы вводите текстовое поле и кнопку по своему усмотрению, слушаете изменения в поле загрузки файла и копируете значение в текстовое поле для отображения. Текстовое поле должно быть доступно только для чтения, поскольку пользователь не сможет выбрать файл оттуда.

Затем вы помещаете реальный элемент управления загрузкой файлов поверх поддельного с позиционированием CSS и назначаете ему непрозрачность CSS (альфа-фильтр в IE), чтобы он был настолько слабым, что его не было видно. Затем вы должны надеяться, что браузер решит поместить кликабельную часть поля загрузки файла поверх того места, где вы визуализировали свою кнопку. Хотя вы можете поиграть и проверить его на работоспособность во многих популярных браузерах, он действительно очень хрупкий и почти наверняка полная трата времени.

1 голос
/ 12 октября 2009

Вы не получите последовательный интерфейс. Каждый браузер имеет свою реализацию. Пользователь Safari ожидает метод Safari, такой же для IE и т. Д.

Вы можете добиться некоторого успеха с контролем CSS над блоком, но имейте в виду, что современные браузеры имеют большую безопасность в этой области. Вы будете иметь ограниченный контроль над этим полем по сравнению с полями

0 голосов
/ 12 октября 2009

Если вы будете следовать инструкциям здесь: http://www.15seconds.com/issue/010504.htm Вы должны быть в состоянии вести себя последовательно. Имея только

Что касается стиля - это задача для вас. Убедитесь, что ваш HTML и CSS совместимы (работают должным образом) во всех поддерживаемых вами браузерах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...