为什么浏览器控制输入类型文件按钮?

时间:2016-03-29 06:45:40

标签: html browser upload

我很好奇为什么不同的浏览器有不同的<input type="file">按钮来浏览文件。有很多问题要问如何设计它们,显然是某些&#34; hacks&#34;用于改变它们。但没有人真正解释为什么浏览器控制它?

2 个答案:

答案 0 :(得分:8)

还记得只有一个浏览器的时间吗?如果样式中没有使用字体,则浏览器必须设置默认字体。不仅字体有默认值,按钮也有默认值。即使没有使用样式,也需要显示元素。

随着时间的推移,出现了更多的浏览器,它们可能具有相同的默认字体但不是,它们希望彼此区分。

想象一下,开发人员忘记按钮的样式,按钮没有默认值。 <input>将如何?在表格下方浮动的文字?那不太好看。

回到问题:文件输入按钮。最初给它一个固定的名称,当前的浏览器只是继续执行最初实现的内容。随着时间的推移,人们习惯了他们在浏览器中看到的文件上传文本。就像下面的参考文献所述,有些人,比如老人或不熟悉计算机(不限于)不使用其他浏览器的人,可能会在看到另一串文字时感到困惑。

参考:Change default text in input type="file"?

因此说控制有点过于强烈。后备听起来好多了。 :)

答案 1 :(得分:4)

AS @cweitat已经指出,这可以追溯到HTML和浏览器的早期开始(你还记得马赛克浏览器吗?)。

那时页面数据和浏览器之间的交互仅限于HTML语法和语义。没有javascript修改可用。

然而,支持上传文件(浏览器本地)到服务器(提供页面)的需求已被广泛接受。要做的就是为此目的提供button逻辑的版本。按钮就是那种允许来自浏览器端的活动的HTML元素(除了链接)。

当时页面上的元素显示在&#34; widgets&#34;方面没有考虑到,因此很可能没有人考虑在HTML元素上提供足够的设置来影响小部件涉及的所有视觉和交互方面用于选择和上传文件。

随后将DOM标准化为表示&#34;页面&#34;和javascript作为一种以编程方式修改各个方面的机制,&#34;用户&#34;并不奇怪。也试图越来越多地控制这种按钮的样式和视觉表现。

另一方面,现在影响页面表示的增长(并且几乎爆炸)的可能性也减少了扩展&#34;当前的HTML元素语法。 (我看过很多网页,避免使用大多数标准HTML元素,而使用javascript来支持div。)

浏览器控件<input type="file"/>,因为它们必须提供此元素的合适表示。由于没有关于内部表示的规范,必须遵循这个元素的实现,但是有一些替代方法可以在不使用这种元素的情况下获得功能,浏览器供应商不太可能会为页面开发人员提供内部状态。 (这种方式允许更多控制)。

与其他按钮相比,文件输入按钮的视觉表示是一组不同的可视组件。一个是按钮本身。另一个是显示所选文件的字段。此外(至少在逻辑上)弹出窗口显示可用文件,probaby一些过滤器逻辑和更多按钮也是功能的一部分。 (即使后面的部分通常是从窗口或操作系统环境引入的,但这是一个实现细节。)

现在仅仅HTML元素不允许指定具有足够细节的样式。例如。指定背景颜色:这应该适用于按钮元素还是反馈区域(选定文件),甚至可能适用于文件选择弹出窗口?浏览器开发人员可能决定展示一些用于“用户”的组件的内部结构。然而,在结果日里,它并不是很有趣的。够了,今天你可以使用其他机制。