代码之家  ›  专栏  ›  技术社区  ›  bkaid

检测浏览器对html文件输入元素的支持

  •  7
  • bkaid  · 技术社区  · 14 年前

    <input type="file" /> 文件上传元素?例如,iOS上的safari浏览器不会呈现元素,我想改为向用户显示一条消息,说明不支持该功能。我知道我可以检查用户代理,看看它是否是iphone/ipad/etc,但我不知道其他浏览器做什么或不支持它,或者将来会不会支持它。

    3 回复  |  直到 14 年前
        1
  •  5
  •   bkaid    14 年前

    Galambalazs的回答为我指出了只有iOS才是正确的方向。我最后用了这个:

    function supportsFileInput() {
      var dummy = document.createElement("input");
      dummy.setAttribute("type", "file");
      return dummy.disabled === false;
    }
    

    但是,它对大多数Android设备不起作用,因为这个函数总是返回true,但是会显示文本为“Uploads disabled”的按钮。

        2
  •  1
  •   gblazex    14 年前

    人体模型试验

    function supportInputType(type) {
      var dummy = document.createElement("input");
      dummy.setAttribute("type", type);
      return dummy.type !== "text";
    }
    

    如果你只想执行一次就更好了:

    var SUPPORT_INPUT_FILE = supportInputType("file");
    

    那你可以用这个 在你所有的代码中。

    测试的工作方式:首先创建一个虚拟元素。它将有默认值 type = "text" . 接下来你试着把它设置为 file . 如果浏览器不支持这种类型,它将保持 text .

        3
  •  1
  •   Jonas    12 年前

    iOS将文件输入元素呈现为“disabled”。因此,您可以测试是否有禁用的输入字段。我用jQuery来做。

    jQuery(function($) {
        $(this).find('[type=file]').each(function () {
            if ($(this).attr('disabled')) {
            // do sth.
            }    
        })
    });