首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >检测浏览器文件输入支持

检测浏览器文件输入支持
EN

Stack Overflow用户
提问于 2012-09-18 23:12:59
回答 1查看 4.8K关注 0票数 5

我知道Mobile Safari不支持<input type="file" />。如果用户无法通过我的HTML表单上传文件,我希望能够显示某种“不支持”的信息。

我浏览了this question,虽然BK的答案是好的,但它并不是决定性的。

根据设备宽度移除窗体是不是更明智?我的意思是用@media (max-device-width: 480px) {}测试设备宽度。这是一种糟糕的方法吗?市场上是否有支持直接在浏览器中上传文件的移动设备?

我知道iOS6 will support media uploads,但它还没有发布。还有其他的吗?Android怎么样?Windows Mobile?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-18 23:41:02

我刚试过这个..。它起作用了。

你自己试试吧!http://fiddle.jshell.net/nmGRu/show/ (如果你发现任何浏览器没有报告正确的结果,我很想知道...同样,对于任何额外的工作,它将有助于完成此答案)

Safari (iOS 5及更低版本)将返回false,因为它不支持文件上传(特别是它允许您添加输入,但将其标记为禁用)……然而,支持它的移动浏览器,如三星Galaxy Tab (安卓),BlackBerry PlayBook / BlackBerry 10 (我正在Dev Alpha上测试)将返回true,因为它们的浏览器确实支持上传。

到目前为止,测试结果是正确的:

  • selection)
  • Apple iOS 5和更低版本的Safari (检测NO selection)
  • Apple iOS 6 Safari (检测支持-允许照片/视频support)
  • Apple iOS 4/iOS5、越狱、已安装support)
  • Apple Upload Enabler (检测带有Chrome的Safari iPhone (检测不支持selection)
  • Android iPhone )(检测支持-允许照片版本的Chrome)(检测support)
  • Android版本的support)
  • BlackBerry (检测support)
  • BlackBerry的support)
  • BlackBerry OS7 SmartPhones (检测Safari PlayBook )(检测Safari 10 (开发人员Alpha和Z10) (检测支持)H231
  • Samsung Galaxy Nexus )(检测support)
  • Samsung Galaxy Nexus (检测support)
  • Samsung Galaxy Nexus7平板电脑)检测support)
  • Samsung Galaxy Note (检测support)
  • Samsung Galaxy S2 (检测support)
  • Samsung Galaxy S2)(检测support)
  • Tizen Galaxy S3 (检测支持)

到目前为止不正确的检测测试结果:

  • Windows Phone {}(检测到支持,但实际上没有支持)

注意:我正在对此代码进行修订,以解决windows phone上的检测问题

这是一个干净的版本,它只返回一个布尔值...并且不会污染页面。

代码语言:javascript
运行
复制
function hasFileUploadSupport(){
  var hasSupport = true;
  try{
    var testFileInput = document.createElement('input');
    testFileInput.type = 'file';
    testFileInput.style.display = 'none';
    document.getElementsByTagName('body')[0].appendChild(testFileInput);
    if(testFileInput.disabled){
      hasSupport = false;
    }
  } catch(ex){
     hasSupport = false;
  } finally {
    if(testFileInput){
      testFileInput.parentNode.removeChild(testFileInput);
    }
  }
  return hasSupport;
}

alert(hasFileUploadSupport());
票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12479897

复制
相关文章

相似问题

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