Совместимость с браузером SharePoint ajax JavaScript - PullRequest
0 голосов
/ 06 марта 2019

Я унаследовал несколько лет JS-код, который имел проблемы с совместимостью с браузером.У меня довольно ограниченный опыт работы с javascript, поэтому я не смог определить проблему.

В частности, это получение информации из установки SharePoint 2013.Он использует soap api для вызова списка в sharepoint, получения некоторых элементов из него в формате XML, а затем добавления этой информации на страницу.Код отлично работает в IE и Edge, но, похоже, не работает в Chrome или Firefox.

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

Я немного уменьшил исходный код, удалив операторы добавления и заменив их на простой alert.length ().Имея это в виду, кажется, что код возвращает данные в IE / Edge (длина> = 1), но в Chrome / FireFox он ничего не возвращает (длина равна 0).

Любая идея, что моя проблема можетбыть здесь?

var WebAlerts = {} || WebAlerts;

WebAlerts.getWebAlerts = function () {
  var soapEnv = '<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\ xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">\
    <soap12:Body>\
      <GetListItems xmlns="http://schemas.microsoft.com/sharepoint/soap/">\
        <listName>Web Alerts</listName>\
          <query><Query>
            <Where><And>
              <Eq><FieldRef Name="Important" /><Value Type="String">1</Value></Eq>
              <Geq><FieldRef Name="Expires" /><Value Type="DateTime"><Today /></Value></Geq>
            </And></Where>
          </Query></query>\
          <viewFields><ViewFields><FieldRef Name="Body" /></ViewFields></viewFields>\
      </GetListItems>\
    </soap12:Body>\
  </soap12:Envelope>';

  var xml = $.ajax({ url: "//domain.com/_vti_bin/lists.asmx",
    type: "POST", dataType: "xml", data: soapEnv,
    error: WebAlerts.printError,
    complete: WebAlerts.processResults,
    contentType: "text/xml; charset=\"utf-8\"",
  });
}

WebAlerts.processResults = function (xData, status) {
  var xmlalerts;
  if (browseris.ie)
  {
    var xmldoc = new ActiveXObject("Microsoft.XMLDOM");
    xmldoc.loadXML(xData.responseText);
    xmlalerts = $(xmldoc).find("z\\:row");
  }
  else
  {
    xmlalerts = $(xData.responseXML).find("row");
  }

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