なぜ異なるブラウザーがファイルをブラウズするために異なる<input type="file">
ボタンを持っているのか不思議です。それらをスタイルする方法を尋ねる多くの質問があります。明らかに、それらを変更するために何らかの "ハック"が使われています。しかし、ブラウザーがそれを制御する理由は誰も実際に説明していませんでした。ブラウザが入力タイプのファイルボタンを制御するのはなぜですか?
答えて
まだブラウザが1つしかないときは覚えていますか?スタイリングでフォントが使用されていない場合、ブラウザーはデフォルトのフォントを設定する必要があります。フォントにはデフォルト値が設定されているだけでなく、ボタンにもデフォルト値が設定されています。スタイリングが使用されていなくても要素を表示する必要があります。
時間が経つにつれて、より多くのブラウザが表示され、同じデフォルトフォントを使用できますが、お互いに区別したいと考えています。
開発者がボタンのスタイルを忘れ、ボタンのデフォルトがないとします。 <input>
はどのように見えるのですか?フォームの下に浮かぶテキスト?それほど目障りではない。
質問:ファイル入力ボタンに戻る。最初は固定名が与えられ、現在のブラウザは最初に実装されていたものだけを継続しています。当時、人々はブラウザに表示されているテキストをアップロードするファイルに慣れていました。下記の参考文献のように、高齢者や他のブラウザを使用していないコンピュータ(限定されない)には適していない人など、別の文字列を見ると混乱することがあります。
参考:Change default text in input type="file"?
ので言ってコントロールが少し強すぎます。フォールバックははるかに良いと思います。 :)
既に述べたように、これはHTMLとブラウザの初期段階(モザイクブラウザを覚えていますか?)にまでさかのぼります。
このとき、ページデータとブラウザとのやりとりは、HTML構文とセマンティクスに制限されていました。 JavaScriptの変更は利用できませんでした。
それにもかかわらず、(ブラウザにローカルな)ファイル(ページを提供した)へのファイルのアップロードをサポートする必要性が広く受け入れられました。行く方法は、その目的のために論理button
のバージョンを提供していた。ボタンは、ブラウザ側から(リンクの他に)起源の活動を可能にする種類のHTML要素でした。
その時点では、ページ上の要素は「ウィジェット」とは考えられない場所に表示されていたため、ウィジェットの選択やアップロードに関連するすべての視覚的および相互作用の側面に影響を及ぼすために、ファイル。
"ページ"とjavascriptの表現としてDOMを後で標準化することで、さまざまな面をプログラム的に変更する仕組みとして、「ユーザー」がスタイリングや視覚的な表現をより多くコントロールできるようになりました。そのような種類のボタン。
一方、現在のページ表現に影響を及ぼす可能性が増している(そして、ほぼ爆発的に)可能性は、現在のHTML要素構文を「拡張する」というプレッシャーも軽減します。 (私はいくつかのJavaScriptを使用してdiv
の賛成で最も標準的なHTML要素を使用しないようWebページをたくさん見てきました。)
だから、ブラウザ制御<input type="file"/>
、彼らはこの要素の適切な表現を提供する必要があるため。この要素の実装には内部表現がないため、このような要素を使用せずに機能を実現するにはいくつかの選択肢がありますが、ブラウザのベンダーはページ開発者の内部状態を公開して(そしてこのようにしてより多くの制御を可能にする)。
ファイル入力ボタンの視覚的表現は、他のボタンとは異なり、さまざまなビジュアルコンポーネントのセットです。 1つはボタンそのものです。もう1つは、選択したファイルを表示するフィールドです。また、(少なくとも論理的に)利用可能なファイルを表示するポップアップウィンドウと、いくつかのフィルタロジックやその他のボタンがあります。 (後の部分が通常ウィンドウやオペレーティングシステムの環境から持ち込まれたとしても、これは実装の詳細です)。
単なるHTML要素では、十分な詳細でスタイリングを指定することはできません。例えば。背景色を指定する:これは、ボタン要素またはフィードバック領域(選択したファイル)に適用するのか、ファイル選択ポップアップに適用するのか?ブラウザ開発者は、「ユーザー」に使用されているコンポーネントの内部構造の一部を展示することに決めた可能性がありますが、形式的な日には「面白い」とは言えず、今日は他のメカニズムを使用することがあります。
- 1. バインド解除入力タイプのファイルボタンが
- 2. Djangoフォーム入力を制御する
- 3. GUIなしでのブラウザ制御
- 4. irbが制御文字を私の逆インタラクティブ検索バッファに挿入するのはなぜですか?
- 5. ASP .Netリピータ制御出力の高さを制御する
- 6. WebブラウザでWPFを制御します。
- 7. Google TTS APIの入力を制御する
- 8. 複数の入力フィールドはローディングバーの進行を制御する別の入力フィールドを追加します
- 9. HttpServletRequestの入力ストリームが空白なのはなぜですか?
- 10. .input-group-addon(Bootstrap3)で.input-groupの入力サイズを制御する方法は?
- 11. 番号入力のようなアンドロイドダイヤルパッドを作成する表示制御
- 12. Gollumの強力なアクセス制御ですか?
- 13. Webブラウザが速すぎる、速度を制御する方法?
- 14. MaskedTextBoxに入力されたURLを制御する方法
- 15. マニピュレータ入力フィールドのフォントの外観を制御する方法は?
- 16. xsd.exeツールでタイプ名を制御することができますか?
- 17. Progress 4GLでASCII制御コードで入力を分割する方法は?
- 18. MVC3 Windows入力タイプ= "ファイル"サイズ制限
- 19. Javascript web-app、制御iPhone入力フォーカスとぼかしで
- 20. TracのCMSタイプのアクセス制御
- 21. ログ出力の制御
- 22. 制御R出力
- 23. D3でForce Directed Graphのバウンス入力を制御するにはどうすればよいですか?
- 24. .NETが手動で入力をサニタイズするのはなぜですか?
- 25. php://入力を切り捨てるのはなぜですか?
- 26. 2つの入力の背景色が異なるのはなぜですか?
- 27. このキーボード入力で画面がフリーズするのはなぜですか?
- 28. なぜ視聴制御をビューコントローラに接続できないのですか?
- 29. 暗号化を使用するとアクセス制御ポリシーが必要なのはなぜですか?
- 30. 入力に基づいてループを制御する方法は? (なぜこのループは永遠に続くのですか?)
& - - webkit-file-upload-buttonと&:: - ms-browsive psuedo-classesを使ってこれらのボタンを整形するのですが、これについて学ぶ前に苦労しなければなりませんでした。ボタンのスタイルを設定するために、主に[ファイル入力のスタイル設定](http://mrme.me/lio/blog)のブログ記事を書きました。 –