Как проверить, поддерживает ли sendH) XMLHttpRequest, File - PullRequest
9 голосов
/ 12 марта 2010

Метод send () Safari XMLHttpRequest поддерживает аргумент File. Firefox не (пока).

Как я могу проверить, поддерживается ли это? В Firefox он будет вести себя так, как если бы была передана пустая строка.

Я пытаюсь избежать определения версии браузера.

Редактировать: FF 3.6, кажется, поддерживает это, но вопрос все еще актуален для более старых версий или других браузеров.

Ответы [ 4 ]

2 голосов
/ 01 апреля 2010

Возможно, что если объект File может быть создан, то send поддерживает его. В Gecko (firefox,) это будет так (совместимость файлов и файлов отправки была выпущена в 1.9 в соответствии с MDC)

0 голосов
/ 02 декабря 2010

Я думаю, что-то вроде этого вы, вероятно, ищете:

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;
}
0 голосов
/ 11 июня 2010

Вы должны попробовать использовать Function.length .

EDIT

Это решение не будет работать, так как Файл не передается в качестве дополнительного аргумента, как указал Рничольсон.

0 голосов
/ 01 апреля 2010

Может ли обычный нюхающий браузер не помочь? jQuery.support может быть достаточно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...