1. ホーム
  2. android

[解決済み] capture属性とaccept属性を持つHTMLファイル入力コントロールの動作がおかしい?

2023-06-01 13:11:54

質問

私の問題

次に、ユーザーは input type=file を取得する必要があります。 upload file + camera のダイアログを表示します。私は、このhtml属性に acceptcapture . しかし、最近のデバイスでは、これが起きないものもあります。以下に、コード例と、それが動作するかどうかの表があります。コード例は Mobile SafariChrome .

TL;DRです。

私は、5つのコード例で input type file :

1.( jsfiddle )

<input type="file" accept="image/*" capture>

2. ( jsfiddle )

<input type="file" accept="image/*" capture="camera">

3. ( jsfiddle )

<input type="file" capture="camera">

4. ( jsfiddle )

<input type="file" capture>

5. ( jsfiddle )

<input type="file" accept="image/*">

デバイスをテストします。

  • Samsung S3 (アンドロイド 4.1.2)
  • サムスン S3 (アンドロイド 4.3)
  • サムスン ギャラクシー タブ 2 7.0 (アンドロイド 4.2.2)
  • サムスン ノート (Android 4.1.2)
  • iPhone 5 (iOS 7.0.4)
  • Nexus 4 (Android 4.4)

結果の表です。

  • W(ork)-有効の意味 upload image dialog with camera
  • P(artially works) - 有効な手段 upload dialog(not image only) with camera
  • N(ot work) - 意味 only camera 使用可能
  • Ch - 意味 Chrome
  • MS - 意味 Mobile Safari

#

--------------------------------------------------------------------------------
|devices/example   | Ch 1| Ch 2| Ch 3| Ch 4| Ch 5| MS 1| MS 2| MS 3| MS 4| MS 5| 
--------------------------------------------------------------------------------
|Samsung S3/4.1    |  N  |  N  |  P  |  P  |  W  |  W  |  N  |  P  |  P  |  W  |
--------------------------------------------------------------------------------
|Samsung S3/4.3    |  N  |  N  |  P  |  P  |  P  |  N  |  N  |  P  |  P  |  P  |
--------------------------------------------------------------------------------
|Samsung Galaxy Tab|  N  |  N  |  P  |  P  |  W  |  W  |  N  |  P  |  P  |  W  |
--------------------------------------------------------------------------------
|Samsung Note      |  N  |  N  |  P  |  P  |  W  |  W  |  N  |  P  |  P  |  W  |
--------------------------------------------------------------------------------
|iPhone 5          |  W  |  W  |  P  |  P  |  W  |  W  |  Y  |  P  |  P  |  W  |
--------------------------------------------------------------------------------
|Nexus 4           |  N  |  N  |  P  |  P  |  W  |  -  |  -  |  -  |  -  |  -  |
--------------------------------------------------------------------------------

見ての通り、私は upload file + camera ダイアログが表示されます。

<input type="file" accept="image/*"> だけです。しかし、そこには capture 属性がないので、Android 4.3では問題があるようです。

質問です。

  1. テーブルの動作は本当ですか?Android 4.3 の動作はバグですか?
  2. キャプチャ属性なしでアップロードダイアログに常にカメラを追加するブラウザを信頼できますか? ダイアログにカメラを追加します。(答えのための証拠のリンクを追加してください)

ありがとうございます。

P.S. 質問は特別ですが、私のサイトでは、ユーザーが画像やカメラにアクセスできるようにする必要があります。また、私は私のテーブルが誰にとっても役に立つと思いますし、また、私は答えを検索し、誰も答えていない場合は、ここに私の答えを投稿します。

どのように解決するには?

これは実際の答えです。次のユーザーのためにここに投稿してください。

実際のところ、現在の実装では capture 属性にはまったく依存せず、type 属性と accept 属性にのみ依存しているようです。 ブラウザはダイアログ ボックスを表示し、ユーザーはファイルを取得する場所を選択することができます。 を選択するダイアログボックスを表示し、そのダイアログボックスで capture 属性は考慮されません。 は考慮されません。たとえば、iOS の Safari は、画像や動画(音声は不可)に対して、accept 属性(キャプチャではありません)を画像や動画(音声ではありません)に対して使用します。たとえ を使用しない場合でも accept 属性を使用しない場合でも、ブラウザは と「既存のものを選択する」のどちらかを選択します(この点を指摘してくれた@firtさんに感謝します)。 に感謝します)。

から この

2016年2月17日編集しました。 この動作は、デバイス上でまだ有効です。