なぜ異なるブラウザーがファイルをブラウズするために異なる<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. 制御されるタイプのテキストの制御されない入力
- 3. タイプのファイルボタン
- 4. GraphQLはなぜ「入力」タイプを選択するのですか?
- 5. ユーザ入力の制御
- 6. Djangoフォーム入力を制御する
- 7. プロセスからのNSPipe入力が制御されない
- 8. ユーザーが入力したウェブサイトの入力を制御するにはどうすればよいですか?
- 9. GUIなしでのブラウザ制御
- 10. 反応制御入力入力できない[onChange]
- 11. ユーザーが入力を入力する順序を制御する方法
- 12. 新しい入力制御
- 13. コンポーネントがReactJSで制御されるタイプのテキストの制御されない入力を変更しています
- 14. 入力ボックスが別の行に強制されるのはなぜですか?
- 15. リアクション警告:「制御されない非表示の入力を変更しています」なぜですか?
- 16. 入力ボタンでRevoluteジョイントを制御する方法は?
- 17. "キャッシュ制御:不変"をサポートするブラウザはどれですか?
- 18. 入力ファイルボタンを縦に整列する方法は?
- 19. ReactJS警告:TextFieldは制御されるテキストタイプの制御されない入力を変更しています
- 20. irbが制御文字を私の逆インタラクティブ検索バッファに挿入するのはなぜですか?
- 21. はなぜ入力(タイプ=テキスト)URL
- 22. 制御されていない反応入力フィールドに入力する正しい方法は何ですか?
- 23. WebブラウザでWPFを制御します。
- 24. ASP .Netリピータ制御出力の高さを制御する
- 25. 要求のキャッシュ制御HTTPヘッダーはなぜですか?
- 26. アプリケーションがFPUで始まるのはなぜですか?制御ワードがDefault8087CWと異なるのですか?
- 27. 入力タイプの時間フィールドがすべてのブラウザで機能しない
- 28. 入力タイプを変更すると、ボタンが機能しなくなるのはなぜですか?
- 29. ブラウザでFirebase Dynamic Linkを入力すると、クリックすると結果が変わるのはなぜですか?
- 30. スクリプトで自動的に入力された入力を制御する
& - - webkit-file-upload-buttonと&:: - ms-browsive psuedo-classesを使ってこれらのボタンを整形するのですが、これについて学ぶ前に苦労しなければなりませんでした。ボタンのスタイルを設定するために、主に[ファイル入力のスタイル設定](http://mrme.me/lio/blog)のブログ記事を書きました。 –