如何检查XMLHttpRequest的send()是否支持File

时间:2010-03-11 21:33:51

标签: javascript xmlhttprequest

Safari的XMLHttpRequest的send()方法支持File参数。 Firefox还没有(还)。

如何检查是否支持此功能?在Firefox中,它只会表现为传递空字符串。

我正试图避免进行浏览器版本检测。

编辑:FF 3.6似乎确实支持它,但问题仍然适用于旧版本或其他浏览器。

4 个答案:

答案 0 :(得分:2)

如果可以创建File对象,则send可能会支持它。在Gecko(firefox)中将是真的(根据MDC,文件和发送的文件兼容性都在1.9中发布)

答案 1 :(得分:0)

您应该尝试使用Function.length

修改

这个解决方案不起作用,因为文件没有作为附加参数传递,正如rnicholson所指出的那样。

答案 2 :(得分:0)

我认为你可能正在寻找这样的东西:

const XMLHttpFactories = [
  function () { return new XDomainRequest(); },
  function () { return new XMLHttpRequest(); },
  function () { return new ActiveXObject("Msxml2.XMLHTTP"); },
  function () { return new ActiveXObject("Msxml3.XMLHTTP"); },
  function () { return new ActiveXObject("Microsoft.XMLHTTP"); },
];

var xhr = null;

for (var i = 0; i < XMLHttpFactories.length; i++) {
  try { xhr = XMLHttpFactories[i](); break; } catch (exception) { continue; }
}

if (!(xhr && ('upload' in xhr) && ('onprogress' in xhr.upload))) {
  alert("Sorry, your browser is not supported.");
  return;
}

答案 3 :(得分:-1)

普通的旧浏览器嗅探无助吗? jQuery.support可能就够了吗?