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

时间:2010-11-08 20:36:44

标签: javascript html

有没有办法用javascript / jquery / crazy-css-hack检测用户的浏览器是否支持呈现功能<input type="file" />文件上传元素?例如,iOS上的safari浏览器不会呈现该元素,而是希望向用户显示不支持该功能的消息。我知道我可以检查用户代理并检查它是否是iphone / ipad /等,但我不知道其他浏览器做了什么或不支持它,或者将来是否会支持它。

3 个答案:

答案 0 :(得分:5)

Galambalazs的回答指出我只适用于iOS的正确方向。我最终使用了这个:

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

但是,它对大多数Android设备都不起作用,因为此函数始终返回true,但呈现的文本为“上传已禁用”。

答案 1 :(得分:1)

您可以编写一个函数来执行虚拟测试

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

玩得开心!

答案 2 :(得分:1)

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

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