首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检测浏览器对html文件输入元素的支持

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

Stack Overflow用户
提问于 2010-11-09 04:36:44
回答 3查看 3.6K关注 0票数 7

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-11-09 05:47:16

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

代码语言:javascript
复制
function supportsFileInput() {
  var dummy = document.createElement("input");
  dummy.setAttribute("type", "file");
  return dummy.disabled === false;
}

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

票数 5
EN

Stack Overflow用户

发布于 2010-11-09 04:43:18

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

代码语言:javascript
复制
function supportInputType(type) {
  var dummy = document.createElement("input");
  dummy.setAttribute("type", type);
  return dummy.type !== "text";
}

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

代码语言:javascript
复制
var SUPPORT_INPUT_FILE = supportInputType("file");

然后你就可以在所有的代码中使用这个“常量”了。

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

玩得开心!

票数 1
EN

Stack Overflow用户

发布于 2012-05-24 03:10:26

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

代码语言:javascript
复制
jQuery(function($) {
    $(this).find('[type=file]').each(function () {
        if ($(this).attr('disabled')) {
        // do sth.
        }    
    })
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4127829

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档