Почему браузеры управляют кнопкой типа ввода?

Мне интересно, почему разные браузеры имеют разные кнопки <input type="file"> для просмотра файлов. Есть много вопросов о том, как их стилизовать, по-видимому, для их изменения используются какие-то "хаки". Но никто не объяснил, почему браузеры контролируют его?

Ответ 1

Помните время, когда был только один браузер? Браузеру необходимо установить шрифт по умолчанию, если в стилировании не использовался шрифт. Не только шрифты имели значения по умолчанию, кнопки также имеют значения по умолчанию. Элементы должны отображаться, даже если стиль не используется.

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

Представьте, что разработчик забывает стилизовать кнопку, и для кнопок нет значения по умолчанию. Как выглядит <input>? Текст, плавающий вокруг формы? Это не очень заметно.

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

Ссылка: Изменить текст по умолчанию в типе ввода = "файл" ?

Таким образом, управление слишком немного сильное. Откат звучит намного лучше.:)

Ответ 2

AS @cweitat уже указал, что это относится к раннему началу HTML и браузерам (вы помните мозаичный браузер?).

В то время взаимодействие между данными страницы и браузером ограничивалось синтаксисом и семантикой HTML. Изменений javascript не было.

Тем не менее, необходимость поддержки загрузки файлов (локальных в браузер) на сервер (который служил странице) был хорошо принят. Для этой цели был предоставлен вариант логики button. Кнопки были типами HTML-элементов, которые допускали активность, происходящую со стороны браузера (помимо ссылок).

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

С более поздней стандартизацией DOM как представления "страницы" и javascript в качестве механизма для модификации различных аспектов программным путем неудивительно, что "пользователи" также пытались получить все больше контроля над стилем и визуальным представлением таких вид кнопок.

С другой стороны, растущие (и почти взрывоопасные) возможности влиять на представления страниц в настоящее время также уменьшают давление для "расширения" текущего синтаксиса элемента HTML. (Я видел много веб-страниц, которые не используют большинство стандартных HTML-элементов в пользу div с некоторым javascript.)

Итак, управление браузером <input type="file"/>, потому что они должны обеспечить подходящее представление этого элемента. Поскольку спецификация внутреннего представления отсутствует, реализация этого элемента должна выполняться, но есть альтернатива для получения функциональности без использования такого элемента, маловероятно, что разработчики браузеров будут беспокоиться об открытии внутреннего состояния, которое разработчики страниц будут играть с (и таким образом, что позволяет контролировать больше).

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

Теперь простой элемент HTML не позволяет подробно указывать стиль. Например. указание цвета фона: должно ли это относиться к элементу кнопки, а также к области обратной связи (выбранный файл) или, возможно, даже к всплывающему окну выбора файла? Разработчики браузеров могли бы принять решение о частичном структурировании компонентов, используемых для пользователя. Однако в формальные дни это было недостаточно "интересно", и сегодня вы можете использовать другие механизмы.